Implementación automatizada de Check Point Endpoint Security en macOS

La implementación manual de software de seguridad en un parque de dispositivos macOS puede ser lenta y propensa a errores. Para resolver esto, hemos creado un script que automatiza tanto la instalación como la configuración inicial del cliente Check Point Endpoint Security para macOS.

Este enfoque garantiza una implementación más rápida y confiable, manteniendo al mismo tiempo la coherencia en la configuración de cada dispositivo. Al integrar configuraciones esenciales—como direcciones de servidor, certificados y parámetros de política—el script permite que cada Mac se conecte de forma segura a tu infraestructura de gestión de Check Point inmediatamente después de la instalación.

Propósito #

Este script está diseñado para agilizar la implementación del cliente Check Point Endpoint Security en dispositivos macOS, automatizando tanto la instalación como la configuración inicial. Sus objetivos son:

  • Automatizar la implementación: Elimina pasos manuales al distribuir e instalar el cliente de seguridad en múltiples Macs, reduciendo la posibilidad de errores humanos y optimizando los recursos del equipo de TI.

  • Habilitar la preconfiguración: Integra todos los datos de configuración necesarios, incluidos certificados, direcciones de servidor y políticas, para que el cliente esté listo para conectarse a la infraestructura de gestión de Check Point inmediatamente después de ser instalado.

  • Garantizar la coherencia: Asegura que todos los dispositivos se configuren con los mismos ajustes y políticas de seguridad, promoviendo la uniformidad y el cumplimiento en toda la organización.

Flujo de trabajo general #

El script sigue un flujo de trabajo estructurado para garantizar una implementación confiable y coherente:

  1. Preparación: Se definen y validan utilidades del sistema clave como base64, curl y unzip al comienzo del script para asegurar la compatibilidad y evitar errores de ejecución.

  2. Incorporación de los datos de configuración: El script contiene un bloque grande de información de configuración codificada en formato Base64, normalmente exportado desde el portal de gestión de Check Point. Este bloque incluye elementos requeridos como certificados, direcciones de servidor y configuraciones de política.

  3. Decodificación y aplicación de la configuración: La configuración codificada en Base64 se decodifica y guarda en un archivo temporal o en la ubicación adecuada donde el cliente de Check Point espera encontrar sus archivos de configuración.

  4. Descarga del instalador: Utilizando curl u otra herramienta similar, el script descarga el paquete de instalación de Check Point Endpoint Security—usualmente en formato ZIP—desde un repositorio confiable interno o externo.

  5. Proceso de instalación: El instalador descargado se descomprime y se ejecuta utilizando herramientas nativas de macOS como el comando installer o iniciando la aplicación .app incluida. Es posible que se requieran privilegios administrativos.

  6. Limpieza y validación post-instalación: Después de la instalación, el script elimina archivos temporales y puede ejecutar una verificación, como comprobar la presencia de la aplicación instalada o consultar su estado operativo.

				
					#!/bin/sh -x
set -e

BASE64=/usr/bin/base64
UNZIP=/usr/bin/unzip
CURL=/usr/bin/curl
INSTALLER=/usr/sbin/installer
ECHO=/bin/echo
RM=/bin/rm
PKGUTIL=/usr/sbin/pkgutil

CONFIG_DAT_B64=PERBX0NPTkZJRz48QUxMT1dfTk9OX1RSVVNURURfQ0E+MTwvQUxMT1dfTk9OX1RSVVNURURfQ0E+PEFMTE9XX0lOVkFMSURfQ0VSVF9EQVRFPjE8L0FMTE9XX0lOVkFMSURfQ0VSVF9EQVRFPjxBTExPV19JTlZBTElEX1NJVEVfTkFNRT4xPC9BTExPV19JTlZBTElEX1NJVEVfTkFNRT48Q0hFQ0tfRk9SX1JFVk9DQVRJT04+MDwvQ0hFQ0tfRk9SX1JFVk9DQVRJT04+PFZEU19MT0NBVElPTj48L1ZEU19MT0NBVElPTj48SEVBREVSPlgtQ1BFUFA6dllvaWdkR0Zubm9RYzc8L0hFQURFUj48VkVSSUZfS0VZPk1JR0pBb0dCQUkxdU9RQml6NzRsdVYzV1BpZERCZStKSW5QQzRmUm8vUHkvNTNLRGtZNlJaQnhRdG5xZmkydFZFS29kQmhGK0dsa0lTM09Oc2R3eC9ZN05GdDhrSk9OZXdlN3hsZktVc2xrL0ViZGVTSERSQzNKMCs1VDZaVUszSXViU0JRYnEzeWExRUI3SmpFU3hITDF0RXIxR3FjaUZ3RnFZN0IvdmV2Q3VneE9OZzdDTEFnTUJBQUU9PC9WRVJJRl9LRVk+PExPQ1BPTEw+NjA8L0xPQ1BPTEw+PENBX0NFUlQ+LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUUwRENDQTdpZ0F3SUJBZ0lCQnpBTkJna3Foa2lHOXcwQkFRc0ZBRENCZ3pFTE1Ba0dBMVVFQmhNQ1ZWTXgKRURBT0JnTlZCQWdUQjBGeWFYcHZibUV4RXpBUkJnTlZCQWNUQ2xOamIzUjBjMlJoYkdVeEdqQVlCZ05WQkFvVApFVWR2UkdGa1pIa3VZMjl0TENCSmJtTXVNVEV3THdZRFZRUURFeWhIYnlCRVlXUmtlU0JTYjI5MElFTmxjblJwClptbGpZWFJsSUVGMWRHaHZjbWwwZVNBdElFY3lNQjRYRFRFeE1EVXdNekEzTURBd01Gb1hEVE14TURVd016QTMKTURBd01Gb3dnYlF4Q3pBSkJnTlZCQVlUQWxWVE1SQXdEZ1lEVlFRSUV3ZEJjbWw2YjI1aE1STXdFUVlEVlFRSApFd3BUWTI5MGRITmtZV3hsTVJvd0dBWURWUVFLRXhGSGIwUmhaR1I1TG1OdmJTd2dTVzVqTGpFdE1Dc0dBMVVFCkN4TWthSFIwY0RvdkwyTmxjblJ6TG1kdlpHRmtaSGt1WTI5dEwzSmxjRzl6YVhSdmNua3ZNVE13TVFZRFZRUUQKRXlwSGJ5QkVZV1JrZVNCVFpXTjFjbVVnUTJWeWRHbG1hV05oZEdVZ1FYVjBhRzl5YVhSNUlDMGdSekl3Z2dFaQpNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUM1NE1zUTFLOTJ2ZFNUWXVzd1pMaUJDR3pECkJObGlGNDR2L3o1bHo0L09ZdVk4VWh6YUZrVkxWYXQ0YTJPRFlwRE9EMmxzbWNnYUZJdE16RVV6Nm9qY25xT3YKSy82QVlaMTVWOFRQTHZRL01EeGRSL3lhRnJ6RE41WkJVWTRSUzFUNEtMN1FqTDd3TURnZTg3QW0rR1pIWTIzZQpjU1pIanpoSFU5RkdIYlRqM0FEcVJheTl2SEhacW04QTI5dk5NRHA1VDE5TVIvZ2Q3MXZDeEoxZ083R3lRNUhZCnBETk82clBXSjArdEpZcWx4dlRWMEthdWRBVmtWNGkxUkZYVUxTbzZQdmk0dmVreUNnS1VaTVFXT2xEeFNxN24KZVRPdkRDQUhmK2pmQkRuQ2FRSnNZMUw2ZDhFYnlIU0h5TG1UR0ZCVU5VdHBUcnc3MDBrdUg5ekIwbEw3QWdNQgpBQUdqZ2dFYU1JSUJGakFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQTRHQTFVZER3RUIvd1FFQXdJQkJqQWRCZ05WCkhRNEVGZ1FVUU1LOUo0N01OSU13b2pQWCsyeXo4TFFzZ000d0h3WURWUjBqQkJnd0ZvQVVPcHFGQnhCbktMYnYKOXIwRlFXNGd3WlRhRDk0d05BWUlLd1lCQlFVSEFRRUVLREFtTUNRR0NDc0dBUVVGQnpBQmhoaG9kSFJ3T2k4dgpiMk56Y0M1bmIyUmhaR1I1TG1OdmJTOHdOUVlEVlIwZkJDNHdMREFxb0NpZ0pvWWthSFIwY0RvdkwyTnliQzVuCmIyUmhaR1I1TG1OdmJTOW5aSEp2YjNRdFp6SXVZM0pzTUVZR0ExVWRJQVEvTUQwd093WUVWUjBnQURBek1ERUcKQ0NzR0FRVUZCd0lCRmlWb2RIUndjem92TDJObGNuUnpMbWR2WkdGa1pIa3VZMjl0TDNKbGNHOXphWFJ2Y25rdgpNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFJZm15VEVNZzR1SmFwa0V2L29WOVBCTzlzUHB5SUJzbFFqNlp6CjkxY3hHNzY4NUMvYitMclRXK0MwNStaNVlnNE1vdGRxWTNNeHRmV29TS1E3Q0MyaVhaRFh0SHdsVHhGV01NUzIKUkoxN0xKM2xYdWJ2REdHcXYrUXFHKzZFbnJpRGZjRkR6a1NuRTNBTmtSLzB5Qk90ZzJEWjJIS29jeVFldGF3aQpEc29YaVdKWVJCdXJpU1VCQUEvTnhCdGkyMUcwMHc5UktwdjB2SFA4ZHM0MnBNM1oyQ3pxcnB2MUtyS1EwVTExCkdJby9pa0dRSTMxYlMvNmtBMWliUnJMRFlHQ0QrSDFRUWM3Q29aRER1KzhDTDlJVlZPNUVGZGtLcnFlS00rMngKTFhZMkp0d0U2NS8zWVI4VjNJZHY3a2FXS0syaEpuMEtDYWN1QktPTnZQaThCREFCCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVmVENDQTJXZ0F3SUJBZ0lERytjVk1BMEdDU3FHU0liM0RRRUJDd1VBTUdNeEN6QUpCZ05WQkFZVEFsVlQKTVNFd0h3WURWUVFLRXhoVWFHVWdSMjhnUkdGa1pIa2dSM0p2ZFhBc0lFbHVZeTR4TVRBdkJnTlZCQXNUS0VkdgpJRVJoWkdSNUlFTnNZWE56SURJZ1EyVnlkR2xtYVdOaGRHbHZiaUJCZFhSb2IzSnBkSGt3SGhjTk1UUXdNVEF4Ck1EY3dNREF3V2hjTk16RXdOVE13TURjd01EQXdXakNCZ3pFTE1Ba0dBMVVFQmhNQ1ZWTXhFREFPQmdOVkJBZ1QKQjBGeWFYcHZibUV4RXpBUkJnTlZCQWNUQ2xOamIzUjBjMlJoYkdVeEdqQVlCZ05WQkFvVEVVZHZSR0ZrWkhrdQpZMjl0TENCSmJtTXVNVEV3THdZRFZRUURFeWhIYnlCRVlXUmtlU0JTYjI5MElFTmxjblJwWm1sallYUmxJRUYxCmRHaHZjbWwwZVNBdElFY3lNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXYzRmkKQ1BINldUVDNHOGtZby9lQVNWanBJb01UcHNVZ1F3RTdoUEhtaFVtZkorcjJoQnRPb0xUYmNKakhNZ0d4QlQ0SApUdTcwK2s4dldUQWk1NnNaVm12aWdBZjg4eFoxZ0RsUmUrWDVOYlowVHFtTmdoUGt0aitwQTRQNm9yNktGV3AvCjNndkR0aGtVQmNycXc2Z0VsRHRHZkRJTjh3Qm1Jc2lOYVcwMmpCRVl0OU95SEdDME9Qb0NqTTdUM1VZSDNnbysKNjExOHlIejdzQ3RUcEpKaWFWRWxCV0VhUklHTUxLbERsaVBmckRxQm1nNHB4UnlwNlYwZXRwNmVNQW81enZHSQpnUHRMWGN3eTdJVmlReVUwQWxZbkFaRzBPM0FxUDI2eDZKeUlBWDJmMVBuYlUyMWduYjhzNTFpcnVGOUcvTTdFCkd3TThDZXRKTVZ4cFJyUGdSd0lEQVFBQm80SUJGekNDQVJNd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBT0JnTlYKSFE4QkFmOEVCQU1DQVFZd0hRWURWUjBPQkJZRUZEcWFoUWNRWnlpMjcvYTlCVUZ1SU1HVTJnL2VNQjhHQTFVZApJd1FZTUJhQUZOTEVzTktSMUV3UmNiTmh5ejJoL3Qyb2F0VGpNRFFHQ0NzR0FRVUZCd0VCQkNnd0pqQWtCZ2dyCkJnRUZCUWN3QVlZWWFIUjBjRG92TDI5amMzQXVaMjlrWVdSa2VTNWpiMjB2TURJR0ExVWRId1FyTUNrd0o2QWwKb0NPR0lXaDBkSEE2THk5amNtd3VaMjlrWVdSa2VTNWpiMjB2WjJSeWIyOTBMbU55YkRCR0JnTlZIU0FFUHpBOQpNRHNHQkZVZElBQXdNekF4QmdnckJnRUZCUWNDQVJZbGFIUjBjSE02THk5alpYSjBjeTVuYjJSaFpHUjVMbU52CmJTOXlaWEJ2YzJsMGIzSjVMekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBV1F0VHZaS0dFYWNrZSsxYk1jOGQKSDJ4d3hiaHV2azY3OXI2WFVPRXdmN29vWEdLVXd1TitNL2Y3UW5hRjI1VWNqQ0pZZFFrTWlHVm5PUW9XQ2NXZwpPSmVreFNPVFA3UVlwZ0VHUkpIanAya250Rm9sZnpxM01zM2RoUDhxT0NrenBOMW5zb1grb1lnZ0hGQ0p5TndxCjlrSUROMHptaU4vVnJ5VHlzY1BmekxYczRKbGV0MGxVSUR5VUdBekhIRklZU2FSdDRiTllDOG5ZN05tdUhES08KS0hBTjR2Nm1GNTZFRDcxWGNMTmE2UitnaGxPNzczei9hUXZnU01PM2t3dklDbFRFckYwVVp6ZHN5cVV2TVFnMwpxbTV2akx5YjRsZGRKSUd2bDVlY2hLMXNyRGRNWnZOaGtSRWc1TDR3bjNxa0tRbXc0VFJmWkhjWVFGSGZqRENtCnJ3PT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJRUFEQ0NBdWlnQXdJQkFnSUJBREFOQmdrcWhraUc5dzBCQVFVRkFEQmpNUXN3Q1FZRFZRUUdFd0pWVXpFaApNQjhHQTFVRUNoTVlWR2hsSUVkdklFUmhaR1I1SUVkeWIzVndMQ0JKYm1NdU1URXdMd1lEVlFRTEV5aEhieUJFCllXUmtlU0JEYkdGemN5QXlJRU5sY25ScFptbGpZWFJwYjI0Z1FYVjBhRzl5YVhSNU1CNFhEVEEwTURZeU9URTMKTURZeU1Gb1hEVE0wTURZeU9URTNNRFl5TUZvd1l6RUxNQWtHQTFVRUJoTUNWVk14SVRBZkJnTlZCQW9UR0ZSbwpaU0JIYnlCRVlXUmtlU0JIY205MWNDd2dTVzVqTGpFeE1DOEdBMVVFQ3hNb1IyOGdSR0ZrWkhrZ1EyeGhjM01nCk1pQkRaWEowYVdacFkyRjBhVzl1SUVGMWRHaHZjbWwwZVRDQ0FTQXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRU4KQURDQ0FRZ0NnZ0VCQU42ZDErcFhHRW1oVyt2WFgwaUc2cjdkLytUdlp4ejBaV2l6VjNHZ1huZTc3WnRKNlhDQQpQVllZWXdodjJ2TE0wRDkvQWxRaVZCRFlzb0hVd0hVOVMzL0hkOE0rZUtzYUE3VWdheTlxSzdIRmlIN0V1eDZ3CndkaEZKMitxTjFqM2h5YlgyQzMycVJlM0gzSTJUcVlYUDJXWWt0c3FibDJpL29qZ0M5NS81WTBWNGV2TE90WGkKRXFJVExkaU9yMThTUGFBSUJRaTJYS1ZsT0FSRm1SNmpZR0IweFVHbGNtSWJZc1VmYjE4YVFyNENVV1dvcmlNWQphdng0QTZsTmY0REQrcXRhL0tGQXBNb1pGdjZ5eU85ZWN3M3VkNzJhOW5tWXZMRUhaNklWRGQyZ1dNWkVld28rCllpaGZ1a0VIVTFqUEVYNDRkTVg0LzdWcGtJK0VkT3FYRzY4Q0FRT2pnY0F3Z2Iwd0hRWURWUjBPQkJZRUZOTEUKc05LUjFFd1JjYk5oeXoyaC90Mm9hdFRqTUlHTkJnTlZIU01FZ1lVd2dZS0FGTkxFc05LUjFFd1JjYk5oeXoyaAovdDJvYXRUam9XZWtaVEJqTVFzd0NRWURWUVFHRXdKVlV6RWhNQjhHQTFVRUNoTVlWR2hsSUVkdklFUmhaR1I1CklFZHliM1Z3TENCSmJtTXVNVEV3THdZRFZRUUxFeWhIYnlCRVlXUmtlU0JEYkdGemN5QXlJRU5sY25ScFptbGoKWVhScGIyNGdRWFYwYUc5eWFYUjVnZ0VBTUF3R0ExVWRFd1FGTUFNQkFmOHdEUVlKS29aSWh2Y05BUUVGQlFBRApnZ0VCQURKTDg3TEtQcEg4RXNhaEI0eU9kNkF6QmhSY2tCNFk5d2ltUFFvWitZZUFFVzVwNUpZWE1QODBrV055Ck9PN01IQUdqSFpRb3BESDJlc1JVMS9ibE1WZ0Rvc3pPWXR1VVJYTzF2MFhKSkxYVmdnS3RJM2xwamJpMlRjN1AKVE1vekkrZ2NpS3FkaTBGdUZza2c1WW1lelR2YWNQZCttU1lnRkZRbHEyNXpoZWFiSVowS2JJSU9xUGpDRFBvUQpIbXlXNzRjTnhBOWhpNjN1Z3l1VitJNlNoSEk1NnlEcWcrMkR6WmR1Q0x6clRpYTJjeXZrMC9aTS9pWng0bUVSCmRFci9WeHFIRDNWSUxzOVJhUmVnQWhKaGxkWFJRTElRVE83RXJCQkRwcVdlQ3RXVllwb056NGlDeFRJTTVDdWYKUmVZTm55aWNzYmtxV2xldE53K3ZIWC9idlo4PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCjwvQ0FfQ0VSVD48Q1BFUFNOZXR3b3JrIHhtbG5zPSJodHRwOi8vc2NoZW1hLmNoZWNrcG9pbnQuY29tL25ldHdvcmsvY3Blc25ldHdvcmsvdjEvIj4KICAgIDxwcm94aW1pdHlUaW1lb3V0PjEyMDwvcHJveGltaXR5VGltZW91dD4KICAgIDxvcEdyb3Vwcz4KICAgICAgICA8b3BHcm91cCBuYW1lPSJkZWZhdWx0Ij4KICAgICAgICAgICAgPG9wIHBhdGg9Ii9jcC9jb25uZWN0aW9uUG9pbnQvZmlsZXNGb3JEeW5hbWljUGFja2FnZSIgYXV0aGVudGljYXRpb25UeXBlPSJERVZJQ0UiIHByb3RvPSJIVFRQU0VTUCIgdHlwZT0iRklMRVNfRk9SX0RZTkFNSUNfUEFDS0FHRSIgcG9ydD0iNDQzIj48L29wPgogICAgICAgICAgICA8b3AgcGF0aD0iL2NwL2Nvbm5lY3Rpb25Qb2ludC9nZXRGREVDcmVkIiBhdXRoZW50aWNhdGlvblR5cGU9IkJPVEgiIHByb3RvPSJIVFRQU0VTUCIgdHlwZT0iR0VUX0ZERV9DUkVERU5USUFMUyIgcG9ydD0iNDQzIj48L29wPgogICAgICAgICAgICA8b3AgcGF0aD0iL2NwL2Nvbm5lY3Rpb25Qb2ludC9kZWNyeXB0RkRFIiBhdXRoZW50aWNhdGlvblR5cGU9Ik5PTkUiIHByb3RvPSJIVFRQUyIgdHlwZT0iREVDUllQVF9GREUiIHBvcnQ9IjQ0MyI+PC9vcD4KICAgICAgICAgICAgPG9wIHBhdGg9Ii9jcC9jb25uZWN0aW9uUG9pbnQvc2V0RkRFUmVjRmlsZSIgYXV0aGVudGljYXRpb25UeXBlPSJERVZJQ0UiIHByb3RvPSJIVFRQU0VTUCIgdHlwZT0iU0VUX0ZERV9SRUNPVkVSWV9GSUxFIiBwb3J0PSI0NDMiPjwvb3A+CiAgICAgICAgICAgIDxvcCBwYXRoPSIvY3AvZmlsZSIgYXV0aGVudGljYXRpb25UeXBlPSJOT05FIiBwcm90bz0iSFRUUFMiIHR5cGU9IlBPTElDWSIgcG9ydD0iNDQzIj48L29wPgogICAgICAgICAgICA8b3AgcGF0aD0iL2NwL2Nvbm5lY3Rpb25Qb2ludC9Ta2VsZXRvbl9wYXlsb2FkVHlwZTEiIGF1dGhlbnRpY2F0aW9uVHlwZT0iTk9ORSIgcHJvdG89IkhUVFBTRVNQIiB0eXBlPSJTS0VMRVRPTl9QQVlMT0FEMSIgcG9ydD0iNDQzIj48L29wPgogICAgICAgICAgICA8b3AgcGF0aD0iL2NwL2Nvbm5lY3Rpb25Qb2ludC90b2tlbiIgYXV0aGVudGljYXRpb25UeXBlPSJOT05FIiBwcm90bz0iSFRUUFMiIHR5cGU9IkdFVF9UT0tFTiIgcG9ydD0iNDQzIj48L29wPgogICAgICAgICAgICA8b3AgcGF0aD0iL2NwL2Nvbm5lY3Rpb25Qb2ludC9nZXRlcGxpY2Vuc2VpbmZvIiBhdXRoZW50aWNhdGlvblR5cGU9Ik5PTkUiIHByb3RvPSJIVFRQU0VTUCIgdHlwZT0iR0VUX0VQX0xJQ0VOU0VfSU5GTyIgcG9ydD0iNDQzIj48L29wPgogICAgICAgICAgICA8b3AgcGF0aD0iL2NwL2Nvbm5lY3Rpb25Qb2ludC9zZXRNRURldkluZm8iIGF1dGhlbnRpY2F0aW9uVHlwZT0iTk9ORSIgcHJvdG89IkhUVFBTRVNQIiB0eXBlPSJTRVRfTUVfREVWSUNFX0lORk8iIHBvcnQ9IjQ0MyI+PC9vcD4KICAgICAgICAgICAgPG9wIHBhdGg9Ii9jcC9jb25uZWN0aW9uUG9pbnQvc3luY3JlcSIgYXV0aGVudGljYXRpb25UeXBlPSJOT05FIiBwcm90bz0iSFRUUFNFU1AiIHR5cGU9IlNZTkNfUkVRVUVTVCIgcG9ydD0iNDQzIj48L29wPgogICAgICAgICAgICA8b3AgcGF0aD0iL2NwL2Nvbm5lY3Rpb25Qb2ludC9sb2d1cGxvYWQiIGF1dGhlbnRpY2F0aW9uVHlwZT0iTk9ORSIgcHJvdG89IkhUVFBTRVNQIiB0eXBlPSJMT0dfVVBMT0FEIiBwb3J0PSI0NDMiPjwvb3A+CiAgICAgICAgICAgIDxvcCBwYXRoPSIvY3AvY29ubmVjdGlvblBvaW50L3JlZ2VwIiBhdXRoZW50aWNhdGlvblR5cGU9IkRFVklDRSIgcHJvdG89IkhUVFBTIiB0eXBlPSJSRUdJU1RFUl9FTkRQT0lOVCIgcG9ydD0iNDQzIj48L29wPgogICAgICAgICAgICA8b3AgcGF0aD0iL2NwL2Nvbm5lY3Rpb25Qb2ludC9zZXRGREVDcmVkIiBhdXRoZW50aWNhdGlvblR5cGU9IkJPVEgiIHByb3RvPSJIVFRQU0VTUCIgdHlwZT0iU0VUX0ZERV9DUkVERU5USUFMUyIgcG9ydD0iNDQzIj48L29wPgogICAgICAgICAgICA8b3AgcGF0aD0iL2NwL2Nvbm5lY3Rpb25Qb2ludC9yZW1vdGVIZWxwRkRFIiBhdXRoZW50aWNhdGlvblR5cGU9Ik5PTkUiIHByb3RvPSJIVFRQUyIgdHlwZT0iUkVNT1RFX0hFTFBfRkRFIiBwb3J0PSI0NDMiPjwvb3A+CiAgICAgICAgICAgIDxvcCBwYXRoPSIvY3AvY29ubmVjdGlvblBvaW50L2NoZWNrTG9nU2NoZW1hIiBhdXRoZW50aWNhdGlvblR5cGU9IkRFVklDRSIgcHJvdG89IkhUVFBTRVNQIiB0eXBlPSJDSEVDS19MT0dfU0NIRU1BIiBwb3J0PSI0NDMiPjwvb3A+CiAgICAgICAgICAgIDxvcCBwYXRoPSIvZXBzL3NiYTRiL3JlZ2lzdGVyIiBhdXRoZW50aWNhdGlvblR5cGU9IkRFVklDRSIgcHJvdG89IkhUVFBTRVNQIiB0eXBlPSJTQkE0Ql9SRUdJU1RFUiIgcG9ydD0iNDQzIj48L29wPgogICAgICAgICAgICA8b3AgcGF0aD0iL2NwL2Nvbm5lY3Rpb25Qb2ludC9nZXRVbmluc3RhbGxBdXRoSW5mbyIgYXV0aGVudGljYXRpb25UeXBlPSJCT1RIIiBwcm90bz0iSFRUUFNFU1AiIHR5cGU9IkdFVF9VTklOU1RBTExfQVVUSF9JTkZPIiBwb3J0PSI0NDMiPjwvb3A+CiAgICAgICAgICAgIDxvcCBwYXRoPSIvY3AvY29ubmVjdGlvblBvaW50L2VuY3J5cHRSTU0iIGF1dGhlbnRpY2F0aW9uVHlwZT0iVVNFUiIgcHJvdG89IkhUVFBTRVNQIiB0eXBlPSJFTkNSWVBUX1JNTSIgcG9ydD0iNDQzIj48L29wPgogICAgICAgICAgICA8b3AgcGF0aD0iL2Vwcy9zYmE0Yi9wb2xpY3kiIGF1dGhlbnRpY2F0aW9uVHlwZT0iREVWSUNFIiBwcm90bz0iSFRUUFNFU1AiIHR5cGU9IlNCQTRCX1BPTElDWSIgcG9ydD0iNDQzIj48L29wPgogICAgICAgICAgICA8b3AgcGF0aD0iL2NwL2Nvbm5lY3Rpb25Qb2ludC90cmRSZXBvcnRJbmZvIiBhdXRoZW50aWNhdGlvblR5cGU9Ik5PTkUiIHByb3RvPSJIVFRQU0VTUCIgdHlwZT0iVFJEX1JFUE9SVF9JTkZPIiBwb3J0PSI0NDMiPjwvb3A+CiAgICAgICAgICAgIDxvcCBwYXRoPSIvY3AvY29ubmVjdGlvblBvaW50L2dldER5bmFtaWNQYWNrYWdlTG9jYXRpb24iIGF1dGhlbnRpY2F0aW9uVHlwZT0iREVWSUNFIiBwcm90bz0iSFRUUFNFU1AiIHR5cGU9IkdFVF9EWU5BTUlDX1BBQ0tBR0VfTE9DQVRJT04iIHBvcnQ9IjQ0MyI+PC9vcD4KICAgICAgICAgICAgPG9wIHBhdGg9Ii9jcC9jb25uZWN0aW9uUG9pbnQvZ2VuZXJpY1BheWxvYWQiIGF1dGhlbnRpY2F0aW9uVHlwZT0iTk9ORSIgcHJvdG89IkhUVFBTRVNQIiB0eXBlPSJHRU5FUklDX1BBWUxPQUQiIHBvcnQ9IjQ0MyI+PC9vcD4KICAgICAgICAgICAgPG9wIHBhdGg9Ii9jcC9jb25uZWN0aW9uUG9pbnQvbmV3a2V5IiBhdXRoZW50aWNhdGlvblR5cGU9Ik5PTkUiIHByb3RvPSJIVFRQUyIgdHlwZT0iTkVXX1pQRE9DX0tFWSIgcG9ydD0iNDQzIj48L29wPgogICAgICAgICAgICA8b3AgcGF0aD0iL2Vwcy9zYmE0Yi9sb2d1cGxvYWQiIGF1dGhlbnRpY2F0aW9uVHlwZT0iREVWSUNFIiBwcm90bz0iSFRUUFNFU1AiIHR5cGU9IlNCQTRCX0xPR1VQTE9BRCIgcG9ydD0iNDQzIj48L29wPgogICAgICAgICAgICA8b3AgcGF0aD0iL2NwL2Nvbm5lY3Rpb25Qb2ludC91cGxvYWRMb2dTY2hlbWEiIGF1dGhlbnRpY2F0aW9uVHlwZT0iREVWSUNFIiBwcm90bz0iSFRUUFNFU1AiIHR5cGU9IlVQTE9BRF9MT0dfU0NIRU1BIiBwb3J0PSI0NDMiPjwvb3A+CiAgICAgICAgICAgIDxvcCBwYXRoPSIvY3AvZmlsZSIgYXV0aGVudGljYXRpb25UeXBlPSJOT05FIiBwcm90bz0iSFRUUFMiIHR5cGU9IlNFUlZFUkxJU1QiIHBvcnQ9IjQ0MyI+PC9vcD4KICAgICAgICAgICAgPG9wIHBhdGg9Ii9jcC9jb25uZWN0aW9uUG9pbnQvdXNlckNoZWNrSW5mbyIgYXV0aGVudGljYXRpb25UeXBlPSJOT05FIiBwcm90bz0iSFRUUFNFU1AiIHR5cGU9IlVTRVJfQ0hFQ0tfSU5GTyIgcG9ydD0iNDQzIj48L29wPgogICAgICAgICAgICA8b3AgcGF0aD0iL2NwL2ZpbGUiIGF1dGhlbnRpY2F0aW9uVHlwZT0iTk9ORSIgcHJvdG89IkhUVFBTIiB0eXBlPSJEU01fU1NMX0RPV05MT0FEIiBwb3J0PSI0NDMiPjwvb3A+CiAgICAgICAgICAgIDxvcCBwYXRoPSIvY3AvY29ubmVjdGlvblBvaW50L2dldEZERURldkluZm8iIGF1dGhlbnRpY2F0aW9uVHlwZT0iREVWSUNFIiBwcm90bz0iSFRUUFNFU1AiIHR5cGU9IkdFVF9GREVfREVWSUNFX0lORk8iIHBvcnQ9IjQ0MyI+PC9vcD4KICAgICAgICAgICAgPG9wIHBhdGg9Ii9jcC9jb25uZWN0aW9uUG9pbnQvYWJCb3RzSW5mbyIgYXV0aGVudGljYXRpb25UeXBlPSJOT05FIiBwcm90bz0iSFRUUFNFU1AiIHR5cGU9IkFCX0JPVFNfSU5GTyIgcG9ydD0iNDQzIj48L29wPgogICAgICAgICAgICA8b3AgcGF0aD0iL2NwL2Nvbm5lY3Rpb25Qb2ludC9zZXRBY3Rpb25TdGF0dXMiIGF1dGhlbnRpY2F0aW9uVHlwZT0iREVWSUNFIiBwcm90bz0iSFRUUFNFU1AiIHR5cGU9IlNFVF9BQ1RJT05fU1RBVFVTIiBwb3J0PSI0NDMiPjwvb3A+CiAgICAgICAgICAgIDxvcCBwYXRoPSIvY3AvYXNrIiBhdXRoZW50aWNhdGlvblR5cGU9Ik5PTkUiIHByb3RvPSJIVFRQUyIgdHlwZT0iQVNLIiBwb3J0PSI0NDMiPjwvb3A+CiAgICAgICAgICAgIDxvcCBwYXRoPSIva2F2OHVwZGF0ZS9wcm9kdWN0aW9uIiBhdXRoZW50aWNhdGlvblR5cGU9Ik5PTkUiIHByb3RvPSJIVFRQUyIgdHlwZT0iQVZfUFJPRCIgcG9ydD0iNDQzIj48L29wPgogICAgICAgICAgICA8b3AgcGF0aD0iL2F2c2lnbmF0dXJlcy9hdjMiIGF1dGhlbnRpY2F0aW9uVHlwZT0iTk9ORSIgcHJvdG89IkhUVFBTIiB0eXBlPSJBVl9TT1BIT1NfUFJPRCIgcG9ydD0iNDQzIj48L29wPgogICAgICAgICAgICA8b3AgcGF0aD0iL2NwL2Nvbm5lY3Rpb25Qb2ludC91bnJlZ2VwIiBhdXRoZW50aWNhdGlvblR5cGU9Ik5PTkUiIHByb3RvPSJIVFRQU0VTUCIgdHlwZT0iVU5SRUdJU1RFUl9FTkRQT0lOVCIgcG9ydD0iNDQzIj48L29wPgogICAgICAgICAgICA8b3AgcGF0aD0iL2NwL2Nvbm5lY3Rpb25Qb2ludC9nZXRGREVOb2RlSW5mbyIgYXV0aGVudGljYXRpb25UeXBlPSJERVZJQ0UiIHByb3RvPSJIVFRQU0VTUCIgdHlwZT0iR0VUX0ZERV9OT0RFX0lORk8iIHBvcnQ9IjQ0MyI+PC9vcD4KICAgICAgICAgICAgPG9wIHBhdGg9Ii9jcC9jb25uZWN0aW9uUG9pbnQvc2V0RkRFRGV2SW5mbyIgYXV0aGVudGljYXRpb25UeXBlPSJERVZJQ0UiIHByb3RvPSJIVFRQU0VTUCIgdHlwZT0iU0VUX0ZERV9ERVZJQ0VfSU5GTyIgcG9ydD0iNDQzIj48L29wPgogICAgICAgICAgICA8b3AgcGF0aD0iL2FzdXBkYXRlL3Byb2R1Y3Rpb24iIGF1dGhlbnRpY2F0aW9uVHlwZT0iTk9ORSIgcHJvdG89IkhUVFBTIiB0eXBlPSJBU19QUk9EIiBwb3J0PSI0NDMiPjwvb3A+CiAgICAgICAgICAgIDxvcCBwYXRoPSIvY3AvY29ubmVjdGlvblBvaW50L211bHRpUGF5bG9hZHMiIGF1dGhlbnRpY2F0aW9uVHlwZT0iTk9ORSIgcHJvdG89IkhUVFBTRVNQIiB0eXBlPSJNVUxUSV9QQVlMT0FEUyIgcG9ydD0iNDQzIj48L29wPgogICAgICAgICAgICA8b3AgcGF0aD0iL2NwL2Nvbm5lY3Rpb25Qb2ludC90ZWxlbWV0cnkiIGF1dGhlbnRpY2F0aW9uVHlwZT0iTk9ORSIgcHJvdG89IkhUVFBTRVNQIiB0eXBlPSJURUxFTUVUUlkiIHBvcnQ9IjQ0MyI+PC9vcD4KICAgICAgICAgICAgPG9wIHBhdGg9Ii9jcC9maWxlIiBhdXRoZW50aWNhdGlvblR5cGU9Ik5PTkUiIHByb3RvPSJIVFRQUyIgdHlwZT0iUEFSIiBwb3J0PSI0NDMiPjwvb3A+CiAgICAgICAgICAgIDxvcCBwYXRoPSIvY3AvY29ubmVjdGlvblBvaW50L2dldEZERVVzZXJJbmZvIiBhdXRoZW50aWNhdGlvblR5cGU9IkRFVklDRSIgcHJvdG89IkhUVFBTRVNQIiB0eXBlPSJHRVRfRkRFX1VTRVJfSU5GTyIgcG9ydD0iNDQzIj48L29wPgogICAgICAgICAgICA8b3AgcGF0aD0iL2NwL2Nvbm5lY3Rpb25Qb2ludC9nZXRBY3Rpb25zIiBhdXRoZW50aWNhdGlvblR5cGU9IkRFVklDRSIgcHJvdG89IkhUVFBTRVNQIiB0eXBlPSJHRVRfQUNUSU9OUyIgcG9ydD0iNDQzIj48L29wPgogICAgICAgICAgICA8b3AgcGF0aD0iL2NwL2ZpbGUiIGF1dGhlbnRpY2F0aW9uVHlwZT0iTk9ORSIgcHJvdG89IkhUVFBTIiB0eXBlPSJEU01fRE9XTkxPQUQiIHBvcnQ9IjQ0MyI+PC9vcD4KICAgICAgICAgICAgPG9wIHBhdGg9Ii9jcC9jb25uZWN0aW9uUG9pbnQvdXBkYXRlRFNJbnN0YW5jZSIgYXV0aGVudGljYXRpb25UeXBlPSJERVZJQ0UiIHByb3RvPSJIVFRQU0VTUCIgdHlwZT0iVVBEQVRFX0RTX0lOU1RBTkNFIiBwb3J0PSI0NDMiPjwvb3A+CiAgICAgICAgICAgIDxvcCBwYXRoPSIvY3AvY29ubmVjdGlvblBvaW50L2luY2lkZW50cmVwb3J0IiBhdXRoZW50aWNhdGlvblR5cGU9Ik5PTkUiIHByb3RvPSJIVFRQU0VTUCIgdHlwZT0iSU5DSURFTlRfUkVQT1JUIiBwb3J0PSI0NDMiPjwvb3A+CiAgICAgICAgICAgIDxvcCBwYXRoPSIvY3AvY29ubmVjdGlvblBvaW50L3VwZGF0ZURpcmVjdG9yeUluZm8iIGF1dGhlbnRpY2F0aW9uVHlwZT0iREVWSUNFIiBwcm90bz0iSFRUUFNFU1AiIHR5cGU9IlVQREFURV9ESVJFQ1RPUllfSU5GTyIgcG9ydD0iNDQzIj4KICAgICAgICAgICAgICAgIDxhdHRyIG5hbWU9IkRJX1JFU1RSSUNUIiB2YWx1ZT0iKiI+PC9hdHRyPgogICAgICAgICAgICAgICAgPGF0dHIgbmFtZT0iRElfSU5URVJWQUwiIHZhbHVlPSI3MjAwIj48L2F0dHI+CiAgICAgICAgICAgICAgICA8YXR0ciBuYW1lPSJESV9QUk9QRVJUSUVTIiB2YWx1ZT0ib2JqZWN0Q2F0ZWdvcnksb2JqZWN0Q2xhc3Msb2JqZWN0R1VJRCxuYW1lLGRpc3BsYXlOYW1lLGRpc3Rpbmd1aXNoZWROYW1lLGNhbm9uaWNhbE5hbWUsZG9tYWluTmFtZSxkZXNjcmlwdGlvbixvYmplY3RTaWQsc0FNQWNjb3VudE5hbWUsb3BlcmF0aW5nU3lzdGVtLG9wZXJhdGluZ1N5c3RlbVZlcnNpb24sbGFzdExvZ29uVGltZXN0YW1wLHVzZXJBY2NvdW50Q29udHJvbCxhY2NvdW50RXhwaXJlcyxsb2Nrb3V0VGltZSx1c2VyUHJpbmNpcGFsTmFtZSxtYWlsLHRlbGVwaG9uZU51bWJlcixtb2JpbGUsdXNlckNlcnRpZmljYXRlLGdyb3VwVHlwZSxtZW1iZXJPZix1U05DaGFuZ2VkLGlzRGVsZXRlZCI+PC9hdHRyPgogICAgICAgICAgICA8L29wPgogICAgICAgICAgICA8b3AgcGF0aD0iL2NwL2Nvbm5lY3Rpb25Qb2ludC9zZXRGREVVc2VySW5mbyIgYXV0aGVudGljYXRpb25UeXBlPSJVU0VSIiBwcm90bz0iSFRUUFNFU1AiIHR5cGU9IlNFVF9GREVfVVNFUl9JTkZPIiBwb3J0PSI0NDMiPjwvb3A+CiAgICAgICAgICAgIDxvcCBwYXRoPSIvY3AvY29ubmVjdGlvblBvaW50L2dldERTQ29uZmlnIiBhdXRoZW50aWNhdGlvblR5cGU9IkRFVklDRSIgcHJvdG89IkhUVFBTRVNQIiB0eXBlPSJHRVRfRFNfQ09ORklHIiBwb3J0PSI0NDMiPgogICAgICAgICAgICAgICAgPGF0dHIgbmFtZT0iRFNfTEFTVFVQREFURUQiIHZhbHVlPSIwIj48L2F0dHI+CiAgICAgICAgICAgIDwvb3A+CiAgICAgICAgICAgIDxvcCBwYXRoPSIvY3AvY29ubmVjdGlvblBvaW50L2FtSW5mZWN0aW9uc0luZm8iIGF1dGhlbnRpY2F0aW9uVHlwZT0iTk9ORSIgcHJvdG89IkhUVFBTRVNQIiB0eXBlPSJBTV9JTkZFQ1RJT05TX0lORk8iIHBvcnQ9IjQ0MyI+PC9vcD4KICAgICAgICAgICAgPG9wIHBhdGg9Ii9jcC9jb25uZWN0aW9uUG9pbnQvZWZySW5jaWRlbnRSZXBvcnQiIGF1dGhlbnRpY2F0aW9uVHlwZT0iTk9ORSIgcHJvdG89IkhUVFBTRVNQIiB0eXBlPSJFRlJfSU5DSURFTlRfUkVQT1JUIiBwb3J0PSI0NDMiPjwvb3A+CiAgICAgICAgICAgIDxvcCBwYXRoPSIvYXN1cGRhdGUvc3RhZ2luZyIgYXV0aGVudGljYXRpb25UeXBlPSJOT05FIiBwcm90bz0iSFRUUFMiIHR5cGU9IkFTX1NUQUciIHBvcnQ9IjQ0MyI+PC9vcD4KICAgICAgICAgICAgPG9wIHBhdGg9Ii9jcC9jb25uZWN0aW9uUG9pbnQvaGIiIGF1dGhlbnRpY2F0aW9uVHlwZT0iTk9ORSIgcHJvdG89IkhUVFBTRVNQIiB0eXBlPSJIQiIgcG9ydD0iNDQzIj4KICAgICAgICAgICAgICAgIDxhdHRyIG5hbWU9IkhCX1JFU1RSSUNUIiB2YWx1ZT0iNSI+PC9hdHRyPgogICAgICAgICAgICAgICAgPGF0dHIgbmFtZT0iSEJfVEVSTUlOQVRFIiB2YWx1ZT0iLTEiPjwvYXR0cj4KICAgICAgICAgICAgICAgIDxhdHRyIG5hbWU9IkhCX0lOVEVSVkFMIiB2YWx1ZT0iOTAiPjwvYXR0cj4KICAgICAgICAgICAgPC9vcD4KICAgICAgICAgICAgPG9wIHBhdGg9Ii9jcC9jb25uZWN0aW9uUG9pbnQvZGVjcnlwdFJNTSIgYXV0aGVudGljYXRpb25UeXBlPSJVU0VSIiBwcm90bz0iSFRUUFNFU1AiIHR5cGU9IkRFQ1JZUFRfUk1NIiBwb3J0PSI0NDMiPjwvb3A+CiAgICAgICAgICAgIDxvcCBwYXRoPSIvY3AvY29ubmVjdGlvblBvaW50L3VwcmVnIiBhdXRoZW50aWNhdGlvblR5cGU9IkRFVklDRSIgcHJvdG89IkhUVFBTIiB0eXBlPSJVUERBVEVfUkVHSVNURVIiIHBvcnQ9IjQ0MyI+PC9vcD4KICAgICAgICAgICAgPG9wIHBhdGg9Ii9jcC9jb25uZWN0aW9uUG9pbnQvU2V0VW5pbnN0YWxsS2V5IiBhdXRoZW50aWNhdGlvblR5cGU9IkRFVklDRSIgcHJvdG89IkhUVFBTRVNQIiB0eXBlPSJTRVRfVU5JTlNUQUxMX0tFWSIgcG9ydD0iNDQzIj48L29wPgogICAgICAgICAgICA8b3AgcGF0aD0iL2thdjh1cGRhdGUvc3RhZ2luZyIgYXV0aGVudGljYXRpb25UeXBlPSJOT05FIiBwcm90bz0iSFRUUFMiIHR5cGU9IkFWX1NUQUciIHBvcnQ9IjQ0MyI+PC9vcD4KICAgICAgICA8L29wR3JvdXA+CiAgICA8L29wR3JvdXBzPgogICAgPHNlcnZlcnM+CiAgICAgICAgPHNlcnZlciB0eXBlPSJFUFMiIGFjY2VwdHNDbGllbnRzPSJ0cnVlIiBhZGRyPSIiIGZxZG49IldhbGxib3gtZmE2ZDgwYjAtaGFwMi5lcG1nbXQuY2hlY2twb2ludC5jb20iIG9wR3JvdXA9ImRlZmF1bHQiIGFkZHI2PSIiIGRuPSJDTj0qLmVwbWdtdC5jaGVja3BvaW50LmNvbSI+CiAgICAgICAgICAgIDxncm91cCBuYW1lPSJkZWZhdWx0Ij48L2dyb3VwPgogICAgICAgIDwvc2VydmVyPgogICAgPHNlcnZlciB0eXBlPSJFUFMiIHhtbG5zPSIiIGFjY2VwdHNDbGllbnRzPSJ0cnVlIiBhZGRyPSIiIGZxZG49IldhbGxib3gtZmE2ZDgwYjAtaGFwMjEuZXBtZ210LmNoZWNrcG9pbnQuY29tIiBvcEdyb3VwPSJkZWZhdWx0IiBhZGRyNj0iIiBkbj0iQ049Ki5lcG1nbXQuY2hlY2twb2ludC5jb20iPjxncm91cCBuYW1lPSJkZWZhdWx0Ij48L2dyb3VwPjwvc2VydmVyPjwvc2VydmVycz4KICAgIDxhdXRoUHJpbmNpcGFscz48L2F1dGhQcmluY2lwYWxzPgogICAgPG9wZXJhdGlvbk1vZGU+CiAgICAgICAgPGF1dGhlbnRpY2F0ZUVuZHBvaW50cz5mYWxzZTwvYXV0aGVudGljYXRlRW5kcG9pbnRzPgogICAgPC9vcGVyYXRpb25Nb2RlPgogICAgPHN1cHBvcnRlZEZlYXR1cmVzPgogICAgICAgIDxmZWF0dXJlIG5hbWU9IkNvbW1vbiBDcml0ZXJpYSIgdmVyc2lvbj0iMiI+PC9mZWF0dXJlPgogICAgICAgIDxmZWF0dXJlIG5hbWU9Ik1FUFBfU1RPUkVfREVWSUNFSU5GTyIgdmVyc2lvbj0iMSI+PC9mZWF0dXJlPgogICAgICAgIDxmZWF0dXJlIG5hbWU9IkZJTEVWQVVMVF9SRUNPVkVSWSIgdmVyc2lvbj0iMSI+PC9mZWF0dXJlPgogICAgICAgIDxmZWF0dXJlIG5hbWU9IkZERV9BVVRIRU5USUNBVElPTl9USU1FU1RBTVAiIHZlcnNpb249IjEiPjwvZmVhdHVyZT4KICAgICAgICA8ZmVhdHVyZSBuYW1lPSJBWlVSRV9BRF9TVVBQT1JUIiB2ZXJzaW9uPSIxIj48L2ZlYXR1cmU+CiAgICA8L3N1cHBvcnRlZEZlYXR1cmVzPgo8L0NQRVBTTmV0d29yaz48L0RBX0NPTkZJRz4=
MANIFEST_B64=PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48IURPQ1RZUEUgcGxpc3QgUFVCTElDICItLy9BcHBsZS8vRFREIFBMSVNUIDEuMC8vRU4iICJodHRwOi8vd3d3LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj48cGxpc3QgdmVyc2lvbj0iMS4wIj48ZGljdD48a2V5PkJsYWRlczwva2V5PjxkaWN0IC8+PGtleT5Db25maWc8L2tleT48ZGljdD48a2V5PmNvbmZpZy5kYXQ8L2tleT48c3RyaW5nPi5jb25maWdfZGF0PC9zdHJpbmc+PC9kaWN0PjxrZXk+RmVhdHVyZXM8L2tleT48ZGljdD48a2V5PlN1cGVyTm9kZTwva2V5Pjx0cnVlIC8+PGtleT5GaXJld2FsbElQVjY8L2tleT48dHJ1ZSAvPjxrZXk+UG9ydFByb3RlY3Rpb248L2tleT48dHJ1ZSAvPjxrZXk+UHVzaE9wZXJhdGlvbnM8L2tleT48dHJ1ZSAvPjxrZXk+VGVsZW1ldHJ5PC9rZXk+PHRydWUgLz48a2V5PldlYkd1aTwva2V5Pjx0cnVlIC8+PC9kaWN0PjwvZGljdD48L3BsaXN0Pgo=
URL="https://ep-client-installers-prd-public.s3.amazonaws.com/eps-clients/mac/88.40.5927/EPS_E88.40_ONLY_DA.zip"
CURL_SWITCH=

CURL_SWITCH="$CURL_SWITCH --connect-timeout 10 -f"

read_server_from_config_dat ()
{
    local IFS=\>
    read -d \< ENTITY CONTENT
    local ret=$?
    TAG_NAME=${ENTITY%% *}
    ATTRIBUTES=${ENTITY#* }
    return $ret
}

try_download_from_server ()
{
    if [[ $TAG_NAME = "server" ]] ; then
        eval local $ATTRIBUTES
        HOST=$fqdn
        if [ -z $HOST ]; then
            HOST=$addr
        fi
        SERVER_URL=$(echo $URL | sed -e "s|https://[^/]*|https://$HOST|")
        if [ $URL = $SERVER_URL ]; then
            $ECHO "Skipping download from $SERVER_URL, has already been tried ($URL)"
            return 1
        fi
        $ECHO -n "Trying download from $SERVER_URL..."
        $CURL $CURL_SWITCH $SERVER_URL -o $EPS_ZIP >/dev/null 2>&1
        RET=$?
        if [ $RET -ne 0 ]; then
            $ECHO "failed with curl error $RET"
            $RM -rf $EPS_ZIP
            return $RET
        fi
        $ECHO "succeeded"
        return 0
    fi
    return 1
}

set +e
$PKGUTIL --pkg-info com.checkpoint.pkg.eps.core
if [ $? -eq 0 ]; then
    echo "Endpoint Security for macOS already deployed (core receipt exists)"
    exit 0
fi
set -e
if [ -d "/Applications/Check Point/Agents/cpdaApp.app" ]; then
    echo "Endpoint Security for macOS already deployed (device agent is installed)"
    exit 0
fi

EPS_ZIP=EPS_ONLY_DA.zip
TMP_DIR="$(mktemp -d /tmp/endpoint_security_installer.XXXXXX)"
cd $TMP_DIR

echo $CONFIG_DAT_B64 | $BASE64 --decode -o .config_dat
echo $MANIFEST_B64 | $BASE64 --decode -o .InstallationManifest.plist

set +e
$CURL $CURL_SWITCH $URL -o $EPS_ZIP >/dev/null 2>&1
if [ $? -ne 0 ]; then
    while read_server_from_config_dat; do
        try_download_from_server
        if [ $? -eq 0 ]; then
            break
        fi
    done < .config_dat
fi
set -e

if [ ! -f $EPS_ZIP ]; then
    echo "Download of Endpoint Security initial client failed."
    exit 1
fi

$UNZIP $EPS_ZIP

PKG_DIR="$TMP_DIR/Endpoint Security Installer.app/Contents/Resources/Configurations"

cd "$PKG_DIR"

PKG_NAME="$(ls "$PKG_DIR" | grep *.pkg)"
PKG_PATH="$PKG_DIR/$PKG_NAME"

$INSTALLER -pkg "$PKG_PATH" -target /

exit 0
				
			
Updated on mayo 14, 2025
¿Te ha sido útil este artículo?

En esta página