commit 57a2089dd910682886500083b64ac37941eba07a Author: ayakael Date: Mon Mar 31 12:02:18 2025 -0400 Initial commit diff --git a/.domains b/.domains new file mode 100644 index 0000000..d7cd709 --- /dev/null +++ b/.domains @@ -0,0 +1 @@ +cdpq-palestine.info diff --git a/2010/09/02/activites-de-la-rentree-2010/index.html b/2010/09/02/activites-de-la-rentree-2010/index.html new file mode 100644 index 0000000..bebee4d --- /dev/null +++ b/2010/09/02/activites-de-la-rentree-2010/index.html @@ -0,0 +1,187 @@ + + + + + + + + + +Activités de la rentrée 2010! – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Activités de la rentrée 2010!

+ +
+ +
+ +

Venez jaser avec nous aux kiosques du GRIP, du 7 au 16 septembre de 8h30 à 14h, à l’Agora du Pavillon Judith Jasmin et au Hall du Pavillon Président-Kennedy. Et surtout ne manquez pas le…

+

RÉSISTOUR

+

Jeudi 16 septembre 18h @ Agora de l’UQÀM (Pavillon Judith Jasmin)

+

Tour guidé des endroits mythiques de la résistance uqamienne. Parce que l’histoire des murs, corridors, portes, salles et îlot (!) qui ont marqué les luttes étudiantes ne doit pas sombrer dans l’oubli.

+

Suivi de

+

RENTREZ À GAUCHE

+

Jeudi 16 septembre 19h30 @ la Cour Sanguinet (entrée par la rue Sanguinet entre Maisonneuve et Ste-Catherine)

+

Présentation du GRIP UQAM et de ses comités, feu aux poudres (discours sur les luttes sociales), show de la société (chorale, fanfare et gumboots) et cocktail militant. Une soirée à saveur délicieusement politique

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2010/09/12/conference-de-luc-parent-et-rencontre-de-mobilisation-avec-le-mqdc/index.html b/2010/09/12/conference-de-luc-parent-et-rencontre-de-mobilisation-avec-le-mqdc/index.html new file mode 100644 index 0000000..ec0d0bc --- /dev/null +++ b/2010/09/12/conference-de-luc-parent-et-rencontre-de-mobilisation-avec-le-mqdc/index.html @@ -0,0 +1,182 @@ + + + + + + + + + +Conférence de Luc Parent et rencontre de mobilisation avec le MQDC – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Conférence de Luc Parent et rencontre de mobilisation avec le MQDC

+ +
+ +
+ +

27 novembre de 14h00 à 18h00 à l’UQÀM, salle A-M050 (la salle se trouve devant la bibliothèque dans le pavillon Hubert-Aquin).

+

Le mouvement s’est donné comme mandat de débuter un cycle de réflexion sur la notion du « vivre ensemble ». Ainsi, en partenariat avec le Grip-UQÀM, le MQDC vous invite à venir assister à une conférence-débat où Luc Parent nous parlera de son expérience de la vie en communauté lors de la conférence intitulée « Vivre ensemble plus que jamais ».

+

Cette conférence sera suivie d’un gouter « à la française » partagé (apporter quelque chose de sucré : brioche, pain et confiture, etc.) avec l’objectif d’impliquer plus de membres et sympathisants à l’intérieur du mouvement des objecteurs et objectrices de croissance au Québec.

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2011/02/09/les-recherches-dinteret-public-enfin-disponibles/index.html b/2011/02/09/les-recherches-dinteret-public-enfin-disponibles/index.html new file mode 100644 index 0000000..1a53ff1 --- /dev/null +++ b/2011/02/09/les-recherches-dinteret-public-enfin-disponibles/index.html @@ -0,0 +1,185 @@ + + + + + + + + + +Les recherches d’intérêt public enfin disponibles! – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + +
+ + + + diff --git a/2011/09/29/5e-numero-du-journal-linteret-public-appel-de-textes/index.html b/2011/09/29/5e-numero-du-journal-linteret-public-appel-de-textes/index.html new file mode 100644 index 0000000..cfab928 --- /dev/null +++ b/2011/09/29/5e-numero-du-journal-linteret-public-appel-de-textes/index.html @@ -0,0 +1,189 @@ + + + + + + + + + +5e numéro du journal L’Intérêt Public – appel de textes! – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

5e numéro du journal L’Intérêt Public – appel de textes!

+ +
+ +
+ +

Pour sa troisième année (jamais 2 sans 3, hein!), le journal L’Intérêt Public du GRIP-UQÀM lance le 5e numéro sur le thème de TRAIT-D’UNION: Déchaînons la normativité!

+

Et là, on vous entend lire tout ça et sûrement bien se demander ce que le thème peut bien vouloir dire et puis après tout, qu’est-ce que ça mange en hiver, un titre comme ça? Ah! Pour ce 5e numéro, on vous invite à délier votre plume autour d’idées qui refusent les tabous, qui prennent les clichés à bras-le-corps pour mieux les démasquer. Osons prendre et unir pour thème d’article des idées ou des concepts qui à priori ne sont pas nécessairement associés dans notre imaginaire collectif et qui forment une association soit intéressante, inquiétante, curieuse, particulière ou bon, hein!

+

La liste peut être longue, farfelue, sérieuse ou encore faire frémir le poil de jambe dans tous les sens… …anarcho-chrétien… …anarcho-capitalisme… …écoqueer… …écodogme… …éconationalisme… …écoparesse… …écosexe… …bureaucrastination… …pornographie féministe… …développement durable… …marchandisation de la créativité… …gratuité scolaire et écologie sociale… …mobilisation étudiante/grève/hausse des frais et alimentation/subsistance… …plan immobilier de l’UQÀM-CÉTACÉ-c’est assez!… …alternatives transport critique… …rapport au travail salarié… …que pouvons-nous faire pour la planète?… …relations polyamoureuses… Et on en passe!!

+

*Notez que les pistes de réflexion énumérées ici servent simplement à insuffler des idées et ne sont en aucun cas des sujets imposés*

+

Aussi, pour la première fois dans la publication de l’Intérêt Public, nous intégrons le ZINE, ce petit livret illustré fait soi-même et si efficace! Vous avez donc le choix d’écrire un texte ou de produire un zine sur le sujet-thème TRAIT-D’UNION: Déchaînons la normativité!

+

Tenté-e-s par l’expérience? Vos doigts vous chicotent et vous avez déjà de l’encre partout sur votre carnet d’écriture ou encore les doigts plein le clavier de votre ordinateur? Allez! Faites parvenir vos textes avant le mercredi 26 octobre 2011 à l’adresse suivante: linteretpublic@gmail.com En ce qui a trait à celles et à ceux qui désirent nos faire parvenir un zine, veuillez nous contacter directement à la même adresse pour les, disons, modalités de récupération du matériel!

+

Cliquez ici pour consulter les consignes pour la rédaction des textes et des zines

+

L’Intérêt Public est également à la recherche de matériel visuel pour le prochain numéro.
+Faites passer à toutes les plumes créatrices et/ou engagées que vous connaissez!

+

Au plaisir de vous lire!

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2011/10/05/18-ans-a-oeuvrer-pour-lecologie-sociale-a-luqam/index.html b/2011/10/05/18-ans-a-oeuvrer-pour-lecologie-sociale-a-luqam/index.html new file mode 100644 index 0000000..649f45b --- /dev/null +++ b/2011/10/05/18-ans-a-oeuvrer-pour-lecologie-sociale-a-luqam/index.html @@ -0,0 +1,233 @@ + + + + + + + + + +18 ans à  oeuvrer pour l’écologie sociale à  l’UQAM – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

18 ans à  oeuvrer pour l’écologie sociale à  l’UQAM

+ +
+ +
+ +

Le GRIP UQAM est un organisme à portée écologique sans but lucratif né le 8 octobre 1993. Depuis, il n’a cessé de fourmiller d’activités.

+

Voir ce document sur nos principaux thèmes et réalisations : historique activites GRIP
+

+

+

Dès ses débuts, le GRIP a généré de nombreux projets structurants, par exemple :

+
    +
  • +

    En implantant le système de récupération des papiers et cartons à l’UQAM, en collaboration avec le service des immeubles et équipements (1995);

    +
  • +
  • +

    Par la Campagne UQAM-Verte qui a mené à l’adoption d’une politique environnementale pour l’UQAM (1997-2000)

    +
  • +
  • +

    En faisant campagne pour des photocopieuses recto-verso à l’UQAM (2004);

    +
  • +
  • +

    En réalisant plusieurs jardins au sol et sur les toits de l’UQAM (2008 à aujourd’hui) ;

    +
  • +
  • +

    En construisant un réseau d’îlots de collecte des déchets électroniques (2010).

    +
  • +
+

+

+

De la recherche constructive…

+

Le GRIP UQAM a permis la réalisation de documents de références tels que :

+
    +
  • +

    un recueil « Pour manger local, sain et abordable » à l’attention des groupes communautaires en sécurité alimentaire à Montréal et des étudiantEs (2006);

    +
  • +
  • +

    un recueil sur les impacts sur la santé et l’environnement des produits d’hygiène féminine et leurs alternatives écologiques (2008);

    +
  • +
  • +

    une étude intitulée «Toitures végétales. Implantation des toits verts en milieu institutionnel. Étude de cas : UQAM» avec le Centre d’Écologie Urbaine (2008)

    +
  • +
+

+

+

Une perspective critique et solidaire

+

D’autres thèmes ont été explorés par le groupe, dont la solidarité communautaire et internationale, comme :

+
    +
  • +

    la démarche pour l’ouverture d’une cuisine collective à l’UQAM (2002 à aujourd’hui);

    +
  • +
  • +

    la tenue de l’événement annuel « Vivre à l’échelle locale » (2007 à aujourd’hui);

    +
  • +
  • +

    la sensibilisation à l’impact des compagnies minières canadiennes à l’étranger (2003 à aujourd’hui).

    +
  • +
+

Pour en savoir plus : historique activites GRIP
+

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2011/10/05/connaissez-vous-le-grip-uqam/index.html b/2011/10/05/connaissez-vous-le-grip-uqam/index.html new file mode 100644 index 0000000..42d86d8 --- /dev/null +++ b/2011/10/05/connaissez-vous-le-grip-uqam/index.html @@ -0,0 +1,195 @@ + + + + + + + + + +Connaissez-vous le GRIP UQAM ? – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Connaissez-vous le GRIP UQAM ?

+ +
+ +
+ +

+

Par la recherche, la sensibilisation et la l’action, le GRIP UQAM travaille à construire une société écologique et conviviale.

+

Par sa structure participative, qui rassemble des étudiant.e.s de toutes les facultés et les réseaute par champs d’intérêts et par projets, le GRIP favorise l’émergence et le développement d’initiatives écologiques et sociales à l’UQAM et dans la communauté environnante.

+

Nous sommes tous membres du GRIP
+

+

Pour réaliser pleinement sa mission et avoir un impact significatif dans la communauté, le GRIP a obtenu en 2012 de la part des étudiant.e.s une cotisation automatique non-obligatoire (CANO).

+

Pour en savoir plus sur l’histoire du GRIP, la diversité d’initiatives qu’il a portées et comment durant 10 ans il a cherché à retrouver cette base de financement via une CANO :
+

+

18 ans à oeuvrer pour l’écologie sociale à l’UQAM
+

+

La petite histoire du financement

+

+

Pour s’impliquer au GRIP UQAM:

+

Abonnez-vous à notre bulletin hebdomadaire pour être tenus informé.e.s, en écrivant à info@gripuqam.org

+

Visitez la page Comités ci-dessus pour voir nos projets actuels.

+

Dites-nous quels thèmes vous intéressent et vos idées de projets en passant nous voir au DS-3159

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2011/10/05/la-petite-histoire-du-financement-du-grip/index.html b/2011/10/05/la-petite-histoire-du-financement-du-grip/index.html new file mode 100644 index 0000000..a8ab100 --- /dev/null +++ b/2011/10/05/la-petite-histoire-du-financement-du-grip/index.html @@ -0,0 +1,205 @@ + + + + + + + + + +La petite histoire du financement du GRIP – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

La petite histoire du financement du GRIP

+ +
+ +
+ +

+

Lorsque le GRIP est né, la première initiative fut de s’entendre avec des associations étudiantes pour la tenue d’un référendum pour une CANO.

+

Les étudiant.e.s consultés ont décidé à 88 % d’appuyer le GRIP, par une cotisation de 1,50 $ par session.

+

L’organisme a pu compter sur ce soutien jusqu’au retrait de l’ADEESE en 1996 et à la dissolution de l’AGEsshalcUQAM (qui regroupait alors l’AFEA, l’AFELC, l’AFESPED et l’AFESH) en 2001.

+

+

L’année 2002 a été difficile. Un document de l’époque le résume :

+
+

« Nous avons dû, depuis janvier dernier, mettre de côté bon nombre d’outils et d’activités qui étaient récurrents à chaque année : le projet de recherche communautaire, notre bulletin d’information, la permanence assurée par la coordonnatrice au local ainsi que des appuis que nous avons dû refuser à des projets étudiants. Les abonnements et adhésions à plusieurs regroupements ont dû être annulés, privant ainsi notre groupe de l’accès direct à l’information sur des enjeux que nous abordons et de réseaux auxquels nous avons longtemps participé.(…) ».

+
+

(extrait de La situation du GRIP-UQAM en date du 23 septembre 2002)

+

À l’Assemblée générale cette année-là, on ignorait si le GRIP allait survivre une autre année, alors que les nouvelles associations étaient toujours à l’étape de se mettre sur pied et que, par conséquent, le financement du GRIP ne trouvait pas sa place à leur ordre du jour.

+

De 2002 à 2010 sans relâche
+

+

De nombreuses démarches ont été entreprises depuis 2002 pour obtenir à nouveau un financement étudiant stable.

+

D’abord financés seulement par projets, ces fonds nous ont permis de poursuivre, jusqu’à ce qu’un soutien minimal à la mission de base de l’organisme soit accordé par quelques associations.

+

Des subventions externes, par des programmes de soutien à l’emploi étudiant ou d’appui à l’action environnementale, ainsi que le programme de subvention du Service à la vie étudiante (SVE) nous aident à subsister.

+

Certains de nos comités arrivent à s’autofinancer et se développer, mais au nombre de projets que porte le GRIP et pour le travail de coordination que cela implique, c’est nettement inadéquat…
+

+

En 2005, nous avons tenté d’être reconnus comme groupe d’envergure. Toutefois, il y avait alors une critique de la part des associations étudiantes des nouvelles modalités par lesquelles certains groupes avaient obtenu une CANO, sans consultation suffisante de la communauté uqamienne (en ce moment la démarche est différente, entre autres du fait que les associations facultaires peuvent choisir comment leurs membres seront consultés).
+

+

Par ailleurs, la mission du GRIP était plus englobante et par conséquent difficile à reconnaître de la part des Services à la vie étudiante, qui veulent s’assurer que les groupes étudiants aient des missions précises et complémentaires. Nous avons donc précisé notre mission, autour de l’implication étudiante en écologie sociale.

+

En 2006 nous avions entrepris les démarches pour une nouvelle entente inter-associative pour un fonds qui financerait les initiatives en écologie sociale à l’UQAM. Après de nombreuses étapes de réflexion et une assemblée générale où nous avons adopté des modifications à nos statuts et règlements pour permettre un tel projet, c’est encore une fois à la complexité des calendriers chargés de plusieurs associations facultaires que nous avons été confrontés. Certaines assemblées nous ont appuyé, mais les priorités des associations n’ont pas permis que le débat soit amené à temps dans les assemblées générales de toutes les facultés.

+

L’avenir maintenant…

+

Enfin reconnus « groupe d’envergure » au printemps dernier, nous avons eu l’appui de la grande majorité des associations facultaires, des syndicats de l’UQAM et de facultés. Ainsi, après 10 ans de travail, on parvient à ramener le débat pour la CANO en assemblées, ces mois-ci. Prenons le temps d’en discuter…

+


+

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2011/10/13/cest-quoi-le-grip/index.html b/2011/10/13/cest-quoi-le-grip/index.html new file mode 100644 index 0000000..ec39f66 --- /dev/null +++ b/2011/10/13/cest-quoi-le-grip/index.html @@ -0,0 +1,180 @@ + + + + + + + + + +C’est quoi le GRIP ? – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + + +
+
+ + + +
+ + + + +
+ + + + diff --git a/2012/11/12/romaine-appel-a-un-arret-des-travaux/index.html b/2012/11/12/romaine-appel-a-un-arret-des-travaux/index.html new file mode 100644 index 0000000..b925768 --- /dev/null +++ b/2012/11/12/romaine-appel-a-un-arret-des-travaux/index.html @@ -0,0 +1,181 @@ + + + + + + + + + +Romaine : appel à  un arrêt des travaux ! – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + + +
+
+ + + +
+ + + + +
+ + + + diff --git a/2013/01/14/assemblee-generale-4-fev/index.html b/2013/01/14/assemblee-generale-4-fev/index.html new file mode 100644 index 0000000..cecd7f7 --- /dev/null +++ b/2013/01/14/assemblee-generale-4-fev/index.html @@ -0,0 +1,186 @@ + + + + + + + + + +Assemblée générale lundi 11 mars – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Assemblée générale lundi 11 mars

+ +
+ +
+ +

+

Assemblée générale spéciale

+

Lundi 11 mars 17h au DS-1420

+

Un document préparatoire avec l’ordre du jour et des infos sur l’ensemble des points abordés en assemblée est disponible au lien suivant.

+

Brièvement, en plus des points qui restaient à aborder de la dernière assemblée (élections, règlements, nouveaux locaux), les deux autres points seront le budget (une part du budget qui devait être adoptés plus tard dans l’année) et la politique de subventions, qui reste à établir et que l’assemblée précédente a demandé de rediscuter.

+

C’est important d’être nombreux à cette prochaine assemblée. On doit être au moins 40 membres et que les 2/3 des comités du GRIP y soient représentés, pour que l’assemblée ait lieu. À date on y était toujours arrivé, sauf la dernière fois, quand nous avons tenté de compléter l’assemblée du début février dont il restait des points importants à traiter… voici d’ailleurs le procès verbal de l’assemblée du 4 février, à adopter.

+

En espérant que vous pourrez y être cette fois-ci. Toute personne étudiant à l’UQAM est membre du GRIP. On peut aussi devenir membre en s’y impliquant 10 heures au cours de l’année.

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2013/01/14/elections-au-ce-et-au-ca/index.html b/2013/01/14/elections-au-ce-et-au-ca/index.html new file mode 100644 index 0000000..34bb08f --- /dev/null +++ b/2013/01/14/elections-au-ce-et-au-ca/index.html @@ -0,0 +1,200 @@ + + + + + + + + + +A.G. 18 fév: Comités + Élections C.E. et C.A. – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

A.G. 18 fév: Comités + Élections C.E. et C.A.

+ +
+ +
+ +

À l’Assemblée générale du 18 février, à 17h au N-M140, ce sera l’élection du conseil d’administration et du conseil exécutif (tous les postes sont ouverts, voir les détails ci-dessous). Ce sera aussi le moment de reconnaître les comités (anciens et nouveaux) voulant faire partie du GRIP pour la prochaine année.

+

Pour les postes de représentant.e.s étudiant.e.s au C.A., on cherche un.e étudiant.e par association facultaire :
+Appel CA GRIP 2015-16
+devoirs des membres d’un C.A.

+

Le poste implique aussi d’être reconnu par son assemblée générale facultaire, avant ou après l’assemblée d’élections du GRIP.

+

Si vous souhaitez plutôt être membre du conseil exécutif du GRIP, plusieurs postes sont ouverts.

+

Que fait le conseil exécutif (CE) ?

+
C’est un lieu d’implication où l’on se trouve au coeur des enjeux sociaux et écologiques, à faciliter le travail de plusieurs comités en diffusant, coordonnant, accueillant de nouveaux projets, proposant des activités mobilisantes…
+
Avec les employé.e.s à la coordination, le CE, composé d’étudiant.e.s de l’UQAM, voit à divers suivis et décisions lors de sa rencontre hebdomadaire, sur une variété de sujets qui animent la vie de l’organisme.
+

Être membre du CE implique une rencontre d’environ 2h par semaine et quelques suivis entre les rencontres.

+
L’exécutif se répartit les rôles suivants, tout en se partageant le travail souvent sur une base plus informelle par champs d’intérêt et disponibilités :
+
* Responsable général-e
+
* Responsable du secrétariat
+
* Responsable du trésor
+
* Responsable des communications
+
* Responsable du personnel
+
* Responsable de l’interne
+
* Responsable de l’externe
+

Pour en savoir plus, sur les différents postes, la mission du GRIP, etc. voir :

+

Réglements Généraux GRIP-UQAM

+

Contactez-nous à l’avance si vous souhaitez vous joindre à l’équipe, au 514.987.3000 poste 4077 ou en écrivant à grip(a)uqam.ca

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2013/01/14/journee-des-comites-foire-aux-kiosques-15-jan-a-lagora/index.html b/2013/01/14/journee-des-comites-foire-aux-kiosques-15-jan-a-lagora/index.html new file mode 100644 index 0000000..52bf9b0 --- /dev/null +++ b/2013/01/14/journee-des-comites-foire-aux-kiosques-15-jan-a-lagora/index.html @@ -0,0 +1,181 @@ + + + + + + + + + +Foire aux kiosques 15 jan. à l’Agora – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + + +
+
+ + + +
+ + + + +
+ + + + diff --git a/2013/03/13/mars-2013/index.html b/2013/03/13/mars-2013/index.html new file mode 100644 index 0000000..6f8b1a3 --- /dev/null +++ b/2013/03/13/mars-2013/index.html @@ -0,0 +1,232 @@ + + + + + + + + + +MARS 2013 – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

MARS 2013

+ +
+ +
+ +

+

Festival Hors-Cadre – films engagés et indépendants

+

Du 13 au 16 mars 2013

+

Un film politiquement engagé ne peut être complété que par l’interaction avec son public… sinon il n’est rien!

+

Le festival Hors-Cadre est une rencontre entre le cinéma et la culture politique, dans l’espace public. Il s’agit de briser les cadres du film et de lui redonner son utilité sociale, c’est à dire être le catalyseur d’une réflexion politique, omniprésente dans nos vies de tous les jours et malheureusement trop souvent ignorée.

+

Le festival Hors-Cadre est organisé par le collectif Médi@s Libres, Cinéma Politica UQAM, plusieurs étudiantEs de l’UQAM et de la communauté.

+

Du 13 au 16 mars 2013, à l’Université du Québec à Montréal

+

Suivez-nous sur Facebook :
https://www.facebook.com/events/108385696016501/

+

Programmation complète:
https://www.grip-uqam.org/hors-cadre

+

Le CÉTACÉ présente

+

Aliment’aktion-Bien manger sans s’endetter

+

Du 7 au 29 mars 2013

+

*****Aliment’aktion : Cueillir en ville*****

+

Jeudi soir, après le souper du Ras-le-Bol, assistez à un super panel présentant différentes manières de récolter les fruits de la nature tout en étant en ville. Nous aurons comme invités Miel Montréal, Alvéole et Les Fruits Défendus.

+

Vendredi, nous accueillerons Anny Schneider de 13 h à 16 h au café des Arts (J-6170). Elle nous donnera un atelier sur les règles de base de l’herboristerie appliquée. Au programme, cueillette et/ou culture, ainsi que transformation de plantes en tisanes, onguents et teinture-mère.
IMPORTANT : APPORTEZ UN POT OU FLACON POUR LES ONGUENTS!
Atelier gratuit, mais inscription obligatoire! Premier arrivé, premier servi!

+

Pour s’inscrire, visitez notre évènement facebook!*****

+

https://www.facebook.com/events/620936341253990/

+

Pendant tout le mois de mars, chaque jeudi à partir du 7, des conférences seront présentées en marge des distributions de repas gratuits déjà entammées par le Ras-l’Bol depuis le début de l’année. Le lendemain auront lieu des ateliers plus pratiques destinés principalement aux membres du collectif mais tout de même ouverts à l’ensemble de la population de l’UQAM, selon le nombres de places disponibles. Chaque semaine aura son thème, son verbe d’action. Le première aura pour thème Manger vivant, la seconde, Cuisiner santé, alors que les deux dernières tourneront autour des actions Cueillir et Faire pousser.

+

Suivez-nous sur Facebook :
https://www.facebook.com/AlimentaktionBienMangerSansSendetter?fref=ts

+

 

+

 

+

Le CRAPAUD- Activités à venir

+

 

+

Forum ouvert en agriculture urbaine de 12h à 16h au café FRACTAL (SH-R380)

+

Le 21 mars, le Crapaud appelle à repenser l’UQAM, son campus et les moyens de l’occuper.

+

Le forum est un espace libre où chacune apporte ses idées, opinions et projets pour faire converger les forces individuelles dans un projet collectif. Il n’y à pas d’ordre du jour prédéfini et nous fonctionnerons sur le mode de l’assemblée publique.

+

Ateliers proposés:

+
    +
  • Conception de jardins (Charrettes de design);
  • +
  • Le potager universitaire;
  • +
  • Ruchers urbains;
  • +
+

Et ce que vous y apporterez!

+

Le forum sera suivi d’un 5 à 7 au pub Sainte-Élisabeth!

+

Bienvenue à toutes et tous!

+

Crapaud

+

 

+
+

Aliments d’ici

+

Poste : Agent de recherche-action, de liaison et de logistique

+
+

Après 7 années à s’organiser sans salarié, Aliments d’ici avec le soutien du GRIP-UQAM, ouvre un premier poste de chargé de projet, à 16h / semaine. La description du poste se trouve  ici.

+

Les candidatures sont acceptées d’ici le 24 mars 2013 et on doit être étudiant.e à l’UQAM. Pour plus d’info, appeler au GRIP-UQAM : 514.987.3000 poste 4077

+

Aliments d’ici

+
+
+ + + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2013/04/10/avril/index.html b/2013/04/10/avril/index.html new file mode 100644 index 0000000..a16b99a --- /dev/null +++ b/2013/04/10/avril/index.html @@ -0,0 +1,221 @@ + + + + + + + + + +AVRIL – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

AVRIL

+ +
+ +
+ +

+

+

Appel à toutes et à tous!

+

Le comité organisateur de la soirée EAU, TERRE INSOUMISES qui se déroulera le samedi 4 mai à 20h30 au Cabaret Underworld dans le cadre du colloque Protection du Territoire et Alternatives Régionales.
+

+

RECHERCHE DES BÉNÉVOLES POUR :
+– Nous aider à installer la salle de spectacle le jour de l’évènement ! Présence requise le samedi 4 mai à partir de 18h + une réunion de préparation. Lundi 29 avril à 18h au cabaret underworld, merci de confirmer votre présence à Ornella.

+

– Filmer, prendre des photos ! Avis à vos ami.es, nous pouvons prêter une caméra pour l’occasion ! (Nikon D5100)

+

– Nous cherchons des banderoles de manifestation et/ou idéalement de blocus de routes pour décorer l’espace le 4 mai !

+

– Nous cherchons un ou une metteure en scène en charge de la coordination des artistes et du déroulement du spectacle. (avoir un peu d’expérience)
+Présence à la réunion du 29 avril à 18h au Cabaret Underworld+ soir du 4 mai dès 18h.

+

Contactez Ornella : ornella.calisti@gmail.com

+

Plus d’info sur la soirée : https://territoire-alternatives.com/a-propos/

+

Merci de votre aide !

+

+

Jardins du CRAPAUD, c’est le début de la saison: appel à la mobilisation !

+

APPEL À TOUTES ET TOUS!

+

Les semis vont bon train et, une fois la neige bien fondue, les jardins reprendront vie!
+Si tu veux participer aux jardins, signale ton intérêt à notre adresse courriel : contact@crapaud.info
+afin que le Crapaud te relance dans le processus de formation des équipes de jardinières-ers

+

https://www.crapaud.uqam.ca
+Collectif de recherche en aménagement paysager et en agriculture urbaine durable (CRAPAUD)

+

Midi-conférences, École d’été, Éco-stage, et sondage sur l’agriculture urbaine
+ÉCOLE D’ÉTÉ
+Ne manquez pas l’inscription à l’École d’été en agriculture urbaine…
+https://www.crapaud.uqam.ca/p=2881

+

LE CRAPAUD RECHERCHE UN-E ÉCO-STAGIAIRE
+Détails sur le site Web: https://www.crapaud.uqam.ca/p=2912

+

SONDAGE POUR CELLES ET CEUX QUI ONT LE POUCE VERT EN VILLE
+Quels sont vos besoins en formation? Petit questionnaire rapide:https://www.aulab.uqam.ca/p=333

+

LES MIDI CONFÉRENCES BIENTÔT DE RETOUR!
+Il y aura des séances les 9 et 23 avril, restez à l’affut:https://www.aulab.uqam.ca/

+

La prochaine sur le cycle du phosphore…

+

Dans le cadre de sa série de séminaires 2012-2013, le Crapaud et le Laboratoire sur l’agriculture urbaine (AU/LAB) de l’Institut des sciences de l’environnement sont heureux d’organiser un midi-conférence avec Geneviève Metson, étudiante au doctorat à l’Université McGill.

+

Elle examine trois villes au Ghana, et trois villes en Amérique du Nord, incluant Montréal, pour voir comment l’agriculture urbaine est une activité importante sur le cycle du phosphore. À travers le mouvement du phosphore dans la ville, elle vise à répondre aux questions suivantes :

+

* Comment l’agriculture urbaine influence-t-elle le mouvement du phosphore dans le système alimentaire des villes?
+* Est-ce que le type d’agriculture urbaine (technique et organisation sociale) modifie le cycle et le recyclage du phosphore urbain?
+* Quel est le potentiel de l’agriculture urbaine pour améliorer le recyclage du phosphore dans une variété de villes?

+

Lieu : UQAM Pavillon Président-Kennedy (PK)
+Date : 9 avril, 12h30 à 14h00
+Local : PK-2675

+

Adresse : 201, avenue du Président-Kennedy (Métro Place des arts)

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2013/04/24/a-surveiller-en-mai-au-grip-uqam/index.html b/2013/04/24/a-surveiller-en-mai-au-grip-uqam/index.html new file mode 100644 index 0000000..9b91d11 --- /dev/null +++ b/2013/04/24/a-surveiller-en-mai-au-grip-uqam/index.html @@ -0,0 +1,212 @@ + + + + + + + + + +À surveiller en MAI au GRIP-UQAM – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

À surveiller en MAI au GRIP-UQAM

+ +
+ +
+ +

+

+

Vous êtes invité.es à une soirée spectacle-bénéfice organisée par le comité Rivières Libres qui se tiendra samedi le 4 mai à 20h30!

+

Venez en grand nombre vous laisser porter par le souffle animé d’artistes engagés tels que Maguy Metellus, Domlebo et Marie-Hélène Massy Émond. Sans raccourcis, nous danserons, chanterons, écouterons et discuterons en charmante compagnie.

+

Si le désir de protéger le territoire vous anime et que ses richesses guident vos pas, venez arroser la soirée en son honneur. Pour que les rivières puissent couler à flots. Pour que les forêts puissent déployer leurs racines. Pour affirmer haut et fort notre désir ferme d’arrêter les pressions exercées sur elles. Nous les voulons insoumises!

+

La soirée se tiendra au Underworld, 1403 rue Ste-Elisabeth, à deux pas de l’UQAM. Cette soirée fera suite à une journée de conférences, kiosques et activités sur le thème de la Protection du Territoire et les Alternatives Régionales.

+

Procurez-vous vos billets en ligne dès maintenant au coût de 5$. Des billets seront également en vente à la porte. Faites vite!

+

https://territoire-alternatives.com/a-propos/

+

RECHERCHE DES BÉNÉVOLES POUR :
+– Nous aider à installer la salle de spectacle le jour de l’évènement ! Présence requise le samedi 4 mai à partir de 18h + une réunion de préparation. Lundi 29 avril à 18h au cabaret underworld, merci de confirmer votre présence à Ornella.

+

– Filmer, prendre des photos ! Avis à vos ami.es, nous pouvons prêter une caméra pour l’occasion ! (Nikon D5100)

+

– Nous cherchons des banderoles de manifestation et/ou idéalement de blocus de routes pour décorer l’espace le 4 mai !

+

– Nous cherchons un ou une metteure en scène en charge de la coordination des artistes et du déroulement du spectacle. (avoir un peu d’expérience)
+Présence à la réunion du 29 avril à 18h au Cabaret Underworld+ soir du 4 mai dès 18h.

+

Contactez Ornella : ornella.calisti@gmail.com

+

Merci de votre aide !

+

+

Du 3 au 5 Mai 2013, l’évènement Protection du territoire et alternatives régionales se penchera sur la question du territoire et de son occupation.

+

Le territoire, espace vital et identitaire des peuples, est au coeur de nombreux sujets d’actualité dans le monde. Au Québec comme ailleurs, de nombreux discours et initiatives communautaires se sont construits en parallèle à la vision dominante du développement économique. D’un autre côté, les questionnements politiques et identitaires sont indissociables de la notion de territoire : le Québec est en grande partie constitué de terres ancestrales non cédées et des peuples autochtones continuent de revendiquer le droit au territoire et à l’ autodétermination sur celui-ci.

+

Ce colloque propose une réflexion collective sur notre rapport au territoire : comment l’habiter, le respecter dans une perspective viable et conviviale. Axés sur le dialogue entre les acteurs territoriaux et la vulgarisation des enjeux qui englobent le territoire, ce colloque se veut un lieu d’échange, d’apprentissage et de compréhension des problématiques propres à l’épanouissement des communautés locales et régionales afin de favoriser la réflexion des participants sur un avenir commun.

+

Horaire préliminaire: https://territoire-alternatives.com/programme/
+ Pour s’inscrire: https://territoire-alternatives.com/inscriptions/

+

Événement facebook

+

+

Offre d’emploi | Trois postes à combler (ATTENTION! DATE LIMITE REPORTÉE!)

+

ATTENTION! DATE LIMITE REPORTÉE AU 26 AVRIL, 17h.

+

Le CRAPAUD est à la recherche de trois personnes motivées et dynamiques pour combler les postes suivants :

+

Horticulteur-trice, de mai à août (cliquez ICI pour voir cette offre d’emploi)
+– Animateur-trice des jardins, de juillet à septembre (cliquez ICI pour voir cette offre d’emploi)
+– Chargé-e de projet en compostage, de mai à août (cliquez ICI pour voir l’offre cette offre emploi)

+

Veuillez faire parvenir votre CV ainsi qu’une lettre de présentation avant le 24 avril 26 avril à 17h à l’adresse suivante : contact@crapaud.info

+

Au plaisir de vous rencontrer!

+

https://www.crapaud.uqam.ca/p=3038

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2013/05/08/mai/index.html b/2013/05/08/mai/index.html new file mode 100644 index 0000000..355579d --- /dev/null +++ b/2013/05/08/mai/index.html @@ -0,0 +1,190 @@ + + + + + + + + + +MAI – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

MAI

+ +
+ +
+ +

Cours de permaculture

+

Du 5 au 17 août 2013 à Frelighsburg, Qc

+

La permaculture est un concept qui a été développé dans les années 70 par David Holmgren et Bill Mollison en Australie. En observant lescultures aborigènes et les écosystèmes de la forêt, ils conclurent qu’il était possible de faire le design d’un système agricole productif qui reflète la diversité, la stabilité et la durabilité des systèmes naturels. La permaculture intègre l’agriculture, l’écologie et la foresterie.

+

Elle peut aussi bien être pratiquée dans les climats tempérés que tropicaux et ce, à différentes échelles. On en observe des exemples sur des balcons, des petits lots urbains, des fermes et dans des villages entiers.

+

Elle s’applique dans le ressenti et la compréhension des écosystèmes qui nous entourent dans un design intelligent et durable en imitant la nature et en s’y intégrant pour y créer l’abondance. Elle est praticable aussi bien à la ville qu’à la campagne, dans les groupes sociaux et les écovillages.

+

COURS

+

Le but fondamental du cours est de présenter une nouvelle vision de l’aménagement écologique tant urbain que rural. Il offre aux participants la possibilité de mettre au point un système d’agriculture ou d’aménagement paysager adapté aux besoins du milieu, à partir de leurs propres observations.

+

Pour plus d’informations et pour vous inscrire consultez le dépliant disponible ICI

+

www.rha-quebec.org
+permaculture@rha-quebec.org
+www.permacultureinternationale.com

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2013/05/24/mai-a-surveiller-au-crapaud/index.html b/2013/05/24/mai-a-surveiller-au-crapaud/index.html new file mode 100644 index 0000000..171ec66 --- /dev/null +++ b/2013/05/24/mai-a-surveiller-au-crapaud/index.html @@ -0,0 +1,182 @@ + + + + + + + + + +MAI-À surveiller au CRAPAUD! – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + + +
+
+ + + +
+ + + + +
+ + + + diff --git a/2013/08/29/septembre-rentree-universitaire/index.html b/2013/08/29/septembre-rentree-universitaire/index.html new file mode 100644 index 0000000..98c3e74 --- /dev/null +++ b/2013/08/29/septembre-rentree-universitaire/index.html @@ -0,0 +1,196 @@ + + + + + + + + + +Septembre: Rentrée universitaire! – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Septembre: Rentrée universitaire!

+ +
+ +
+ +


+

+

Bonne rentrée à tous et à toutes!

+

Le GRIP-UQAM célèbrera cette année ses 20 ans!

+

Vous avez du mal à vous y retrouver dans les méandres administratifs uqamiens?
+Les épais murs bruns de l’université recèlent de nombreux secrets biens gardés.

+

Pour découvrir l’UQAM sous un autre jour, vous y retrouver ou y ajouter votre petite touche de verdure, passez nous voir au GRIP UQAM!

+

Le GRIP en bref:

+

Le Groupe de Recherche d’Intérêt Public est un collectif universitaire ouvert à tous et à toutes les étudiantEs désirant s’impliquer, s’interroger et agir sur les questions environnementales et sociales!

+

Le GRIP-UQAM est aussi un observatoire critique, une pouponnière d’idées et un lieu de diffusion permettant d’envisager le changement social en offrant des informations et des outils à la communauté uqamienne afin de mieux saisir les enjeux qui y sont liés!

+

Le GRIP-UQAM c’est également plus de 10 comités qui oeuvrent à transformer l’université et la ville. Pour en savoir plus, visitez la section « comités » de notre site web

+

Foire aux comités

+

Le 25 septembre prochain se tiendra la foire aux comités du GRIP-UQAM dans l’agora de l’UQAM (Pavillon Judith-Jasmin). C’est l’occasion parfaite pour découvrir les comités qui forment le GRIP et d’y rencontrer tous ceux et toutes celles qui s’y impliquent.

+

Les comités recrutent! Vous souhaitez vous impliquer? Venez vous informer!

+

Suivez nous sur Facebook! De nombreux événements, conférences et activités vous attendent pendant la session d’automne.

+

Au plaisir de vous rencontrer et à bientôt!

+

L’équipe du GRIP-UQAM

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2013/09/03/achat-collectif-de-fruits-et-legumes-bio-locaux/index.html b/2013/09/03/achat-collectif-de-fruits-et-legumes-bio-locaux/index.html new file mode 100644 index 0000000..a14a433 --- /dev/null +++ b/2013/09/03/achat-collectif-de-fruits-et-legumes-bio-locaux/index.html @@ -0,0 +1,188 @@ + + + + + + + + + +Achat collectif de fruits et légumes bio locaux – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Achat collectif de fruits et légumes bio locaux

+ +
+ +
+ +
+
C’est le temps des poires (et des oignons, etc.) !
+
+
Le comité Aliments d’ici du GRIP-UQAM vous invite à participer à un achat collectif : il s’agit de placer votre commande au plus tard le mercredi 4 septembre 2013 à minuit sur le site de la dépense. https://ladepense.alimentsdici.info/
+ +
La distribution aura lieu le vendredi 6 septembre entre 17h et 19h, aux kiosques du rez-de-chaussée du pavillon de design de l’UQAM (1440, rue Sanguinet). https://www.uqam.ca/campus/pavillons/de.htm
+
+

De l’aide serait grandement appréciée au moment de la distribution et quelques heures plus tôt. Seriez-vous disponible vendredi quelques heures avant et durant la distribution ? inscrivez-vous
+https://alimentsdici.info/content/2012-11-06/formulaire-pour-b%C3%A9n%C3%A9volat

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2013/09/12/assemblee-generale-le-26-septembre/index.html b/2013/09/12/assemblee-generale-le-26-septembre/index.html new file mode 100644 index 0000000..2562d14 --- /dev/null +++ b/2013/09/12/assemblee-generale-le-26-septembre/index.html @@ -0,0 +1,207 @@ + + + + + + + + + +Assemblée générale le 26 septembre – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Assemblée générale le 26 septembre

+ +
+ +
+ +

+
+

Avis à tous et toutes!
+ Étudiant-es à l’UQAM? Vous êtes membre du GRIP!

+

Le jeudi 26 septembre prochain se tiendra la première assemblée générale du GRIP UQAM.

+

Rendez-vous à 17h au local N-M310.
+( Adresse du pavillon N: 1205, rue Saint-Denis)

+

***Le Groupe de Recherche d’Intérêt Public est un collectif universitaire ouvert à tous les étudiant-es désirant s’impliquer, s’interroger et agir sur les questions environnementales et sociales.***

+

À l’ordre du jour:
+-Budget
+-Plan d’action
+-Élections

+

Documents : appel pour des membres au C.E. et au C.A., propositions de plans d’action, budgets, etc.

+

Suivre notre événement facebook: Cliquez ici

+

À très bientôt!

+

La veille, une journée de kiosques et d’activités est prévue à l’Agora du pavillon J.

+

ce mercredi de 11h à 18h à l’Agora (pavillon J, niveau métro)
+
Kiosques des comités du GRIP

+

Projection de films par le comité Medi@s Libres
+https://www.grip-uqam.org/M@L

+

Ateliers et discussions :
+12h « Protection du territoire : enjeux actuels, stratégies et solidarités avec les autochtones »
+avec le comité SOS Territoire

+

13h30 « Construire des systèmes alimentaires équitables et résilients »
+
avec le comité Aliments d’ici – Convergence Justice alimentaire Montréal (JAM)

+

15h30« Initiation à deux disciplines de cirque : poï et balle contact »
+avec le comité Autarcirque
+

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2013/09/27/ouverture-de-poste/index.html b/2013/09/27/ouverture-de-poste/index.html new file mode 100644 index 0000000..471bd0d --- /dev/null +++ b/2013/09/27/ouverture-de-poste/index.html @@ -0,0 +1,221 @@ + + + + + + + + + +Ouverture de poste – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Ouverture de poste

+ +
+ +
+ +

Le GRIP recherche activement un ou une candidate pour se joindre à l’équipe de coordination!

+

Poste de coordination aux activités
+ pour le GRIP-UQAM (15-20 h / semaine) Candidatures acceptées jusqu’au le 4 octobre 2013 à 23:59.

+

Description du poste:

+

La personne à la coordination aux activités aura pour principales responsabilités de:

+
    +
  • Assurer une permanence au local (environ 5-10h/semaine)
  • +
  • Accueillir et orienter des personnes voulant s’impliquer
  • +
  • Faire le suivi des communications courriels et téléphoniques
  • +
  • Assurer le soutien logistique aux activités des divers comités du GRIP (+/- 10 comités) : communication sur les réseaux du GRIP, aide à trouver des subventions extérieures à la CANO, lien avec les SVE, etc.
  • +
  • Assurer le soutien logistique aux instances du GRIP (Assemblée, Exécutif, C.A., Pléniére inter-comités, etc.) : préparer les documents, réservation des locaux, etc.)
  • +
  • Faciliter l’organisation des activités du GRIP (ex. kiosques, 5à7, tournée des classes, accueil et orientation des nouveaux, réservations de matériel)
  • +
  • Mettre à jour une liste des tâches quotidiennes pouvant être réalisées par les bénévoles
  • +
  • Rédiger des rapports et documenter nos pratiques pour favoriser l’autogestion
  • +
  • Mandat spécial sur toute l’année: initier et soutenir l’organisation de certains événements spécifiques au 20e anniversaire du grip
  • +
+

Les exigences pour l’obtention de ce poste seront :

+
    +
  • Bonne habilités communicationnelles
  • +
  • Excellent sens de l’organisation
  • +
  • Connaissance de base de l’environnement apple et de la suite office
  • +
  • Connaissance du courant d’écologie sociale et du milieu étudiant uqamien
  • +
  • Atouts : notions en audiovisuel et expérience dans l’entrée d’information sur un site web (django et wordpress)
  • +
  • Nous cherchons une personne : patiente, autonome, pro-active, coopérative, flexible (dans les horaires), ouverte et accueillante.
  • +
+

Conditions de travail

+
    +
  • 15-20h/semaine, selon les disponibilités de l’employé.e et l’entente avec les membres de l’exécutif
  • +
  • Durée de l’emploi : session d’automne 2013 et d’hiver 2014, renouvelable
  • +
  • Entrée en fonction : en octobre
  • +
  • Salaire : 16$/h
  • +
  • La personne candidate doit être étudiant.e
  • +
+

Pour déposer votre candidature:

+

Faites parvenir votre c.v. ainsi qu’une lettre de présentation à l’adresse : emploi.grip@gmail.com d’ici le 4 octobre 2013, dans un message ayant pour titre «coordination activités».
+ Pour plus d’information, vous pouvez également nous appeler au 514.987.3000 poste 4077

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2013/10/09/octobre-2013/index.html b/2013/10/09/octobre-2013/index.html new file mode 100644 index 0000000..2b3c036 --- /dev/null +++ b/2013/10/09/octobre-2013/index.html @@ -0,0 +1,209 @@ + + + + + + + + + +OCTOBRE 2013 – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

OCTOBRE 2013

+ +
+ +
+ +

+

Assemblée générale et marché fermier de l’UQAM

+

ASSEMBLÉE GÉNÉRALE!
+ GRIP-UQAM

+

Étudiant-es à l’UQAM? Vous êtes membre du GRIP!

+

Le mardi 15 octobre à 17h30, venez en grand nombre assister à la reprise de la dernière assemblée générale. Ce sera l’occasion de découvrir ou re-découvrir le groupe de recherche d’intérêt public.

+

En constante évolution, le GRIP-UQAM concentre ses travaux et recherches à l’intérieur de différents comités, oeuvrant chacun dans un domaine précis; jardinage urbain, alimentation, médias alternatifs, et bien plus! Ces derniers proposent toute l’année des conférences, ateliers et espace de rencontres.

+

L’écologie sociale t’intéresse? C’est l’occasion parfaite pour venir rencontrer ceux et celles qui oeuvrent à travers les différents comités du GRIP-UQAM.

+

Au menu de l’assemblée:

+

-Budget
+-Plan d’action
+-Élections ( conseil d’administration et conseil exécutif!)

+

Documents : appel pour des membres au C.E. et au C.A., propositions de plans d’action, budgets, etc.

+

Rendez-vous mardi 15 octobre à 17h30 au local A-2405

+

Écrivez nous au www.grip@uqam.ca
+Ou passez nous voir au local DS-3159

+

/////////////////////////////////////////////////////////////////////////////

+

Marché Fermier de l’UQAM!

+

Le comité Aliments d’Ici du GRIP-UQAM est fier d’annoncer la tenue d’un marché fermier le 16 octobre prochain de 11h à 17h sur la Place Pasteur, sur la rue St Denis coin De Maisonneuve.

+

Un marché fermier à l’UQAM, une première! Des maraîchers locaux et biologiques comme le Santropol Roulant et les Jardins de la Résistance seront présents avec des légumes de saison. Des kiosques de sensibilisations se tiendront aussi avec le CRAPAUD et Miel Montréal ou encore Vigilance OGM.
+Pour cette journée mondiale de l’alimentation prenons le temps de nous arrêter et de bien manger.

+

-De 12h30 à 14h-
+*Atelier- discussion* ouvert à toutes et tous –
+– La contribution de la paysannerie à la souveraineté alimentaire et l’agroécologie, présentation de 20 min par Stéphanie Wang du comité international de l’Union Paysanne,
+– L’accaparement des terres, présentation de 20min par Claire Lagier de Justice Alimentaire Montréal,
+Les présentations seront suivies de périodes de questions/réponses et d’une discussion libre.

+

Ainsi que de la musique live toute la journée !

+

Au plaisir de vous y voir !
+ALIMENTS D’ICI – Comité du GRIP-UQAM

+

https://www.facebook.com/events/203491666498366/

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2013/10/23/soiree-mortelle/index.html b/2013/10/23/soiree-mortelle/index.html new file mode 100644 index 0000000..938d8b5 --- /dev/null +++ b/2013/10/23/soiree-mortelle/index.html @@ -0,0 +1,188 @@ + + + + + + + + + +Soirée Mortelle! – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Soirée Mortelle!

+ +
+ +
+ +

+

Jeudi 31 octobre à  partir de 18h, au Café Fractal, local SH-R380 (Complexe des sciences).

+

Venez célébrer Halloween en bonne compagnie tout en profitant de notre délicieuse bière pas chère! Cette année, le GRIP fête également ses 20 ans :)

+

Au menu de la soirée:

+

18:00 Maquillage d’horreur
+20:00 Discussions autour du GRIP et jam musical
+21:00 Los Zanganos
+22:00 Les Sofilanthropes https://lessofilanthropes.bandcamp.com/

+

* Se rendre au café fractal, à  partir du métro place des arts: Empruntez la sortie « UQAM » -> Traversez la cour du campus par l’extérieur-> Entrez dans le pavillon « SH » au rez de chaussé-> Le café se situe tout près de l’entrée à  droite!

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2013/11/12/appel-de-textes-et-images-pour-linteret-public/index.html b/2013/11/12/appel-de-textes-et-images-pour-linteret-public/index.html new file mode 100644 index 0000000..9d14537 --- /dev/null +++ b/2013/11/12/appel-de-textes-et-images-pour-linteret-public/index.html @@ -0,0 +1,190 @@ + + + + + + + + + +Appel de textes et images pour L’Intérêt public – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Appel de textes et images pour L’Intérêt public

+ +
+ +
+ +

+

Appel de texte pour le journal du GRIP, L’intérêt public!

+

Le GRIP fête ses 20 ans cette année. Afin de fêter en grand, nous préparons un numéro spécial du journal L’intérêt du GRIP sur le thème suivant :

+

////////Luttes écologistes et changement social//////////

+

L’objectif de ce numéro sera de faire des liens entre le passé, le présent et le futur des luttes écologistes afin d’en faire un bilan partiel et d’ouvrir des possibilités d’action.

+

Nous recherchons des personnes prêtes à rédiger des textes de tous horizons traitant de thèmes tels que : Luttes anticoloniales, décroissance économique, mobilisation contre des projets miniers, pétroliers, etc, dialectique entre l’être humain et son environnement, agriculture urbaine, permaculture et agroforesterie, alimentation locale et biologique, alternatives économiques, etc.

+

La forme des textes est libre : textes courts ou longs, textes informatifs, analytiques ou narratifs, etc. Nous recherchons également des dessins, des bandes-dessinées et des photographies!

+

Date limite de réception des textes : 10 décembre 2013.

+

Si vous êtes intéressé-e-s à participer en tant qu’auteur-e-s, vous pouvez nous contacter en nous transmettant le thème du texte que vous souhaitez rédiger : linteretpublic@gmail.com

+

Nous recherchons aussi des personnes souhaitant participer à l’équipe de coordination du journal (correction de textes, mise en page, promotion, communication, etc.). Si vous êtes intéressé-e-s à faire participer de cette équipe, écrivez-nous à : activite.grip@gmail.com

+

Au plaisir de partager avec vous!

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2013/11/26/le-grip-recherche-un-e-stagiaire-charge-e-de-projet-en-coordination-dactivites/index.html b/2013/11/26/le-grip-recherche-un-e-stagiaire-charge-e-de-projet-en-coordination-dactivites/index.html new file mode 100644 index 0000000..df1e3f0 --- /dev/null +++ b/2013/11/26/le-grip-recherche-un-e-stagiaire-charge-e-de-projet-en-coordination-dactivites/index.html @@ -0,0 +1,197 @@ + + + + + + + + + +Le GRIP recherche un-e stagiaire – Chargé-e de projet en coordination d’activités – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Le GRIP recherche un-e stagiaire – Chargé-e de projet en coordination d’activités

+ +
+ +
+ +

+

Il s’agit d’un mandat Éco-stage Katimavik qui aura lieu du 7 janvier au 30 mars 2014.

+

Voici le lien pour consulter l’orffre complète de stage: Éco-stage_GRIP

+

La personne sélectionnée contribuera à différents projets:

+

– Participer au développement d’une exposition en lien avec l’évolution des activités du GRIP pour l’écologie et la justice sociale depuis les 20 derniéres années;
+– Aider à l’organisation d’un colloque/série de conférences sur des thémes tels que : luttes écologistes et changement social, alimentation biologique et locale, agriculture urbaine, etc;
+– Aider à la coordination des différents comités du GRIP;
+– Contribuer aux réflexions concernant les pratiques d’autogestion du collectif.

+

Pour postuler :

+
    +
  1. Rendez vous sur le www.ecostage.qc.ca pour découvrir le programme
  2. +
  3. Vérifiez que vous remplissez les conditions d’admissibilité
  4. +
  5. Complétez le formulaire d’inscription en ligne
  6. +
  7. Envoyez votre dossier complémentaire, avec les piéces demandées, à info@ecostage.qc.ca
  8. +
  9. Sur réception de toutes les piéces du dossier, il sera procédé à une premiére analyse de votre candidature (seuls les candidats présélectionnés seront contactés).
  10. +
+

Nous avons hâte de recevoir vos candidatures!

+

– L’équipe du GRIP

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2013/11/29/atelier-de-creation-de-materiel-de-cirque/index.html b/2013/11/29/atelier-de-creation-de-materiel-de-cirque/index.html new file mode 100644 index 0000000..0d7899f --- /dev/null +++ b/2013/11/29/atelier-de-creation-de-materiel-de-cirque/index.html @@ -0,0 +1,239 @@ + + + + + + + + + +Atelier de création de matériel de cirque – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Atelier de création de matériel de cirque

+ +
+ +
+ +

Trouver LE cadeaux pour vos proches est une source d’angoisse? Autarcirque a peut être l’idée qu’il vous faut !

+

Venez fabriquer vos cadeaux de Noël avec nous, pour vous ou pour vos proches!
+ Avec la participation de Cirkazou (compagnie Montréalaise, écologique de Cirque et d’animation)

+

JEUDI le 5 décembre. Local vous sera communiqué cette semaine.

+

Pous s’inscrire : https://www.grip-uqam.org/atelier_autarcirque_materiel

+

Facebook: https://www.facebook.com/events/1375774235999828/

+

Cet atelier est gratuit! Merci le Grip-Uqam!

+

A cet atelier, nous serons en mesure d’apprendre à  tous (bricoleurs et non bricoleurs) comment faire :
+-Des pois en tissu et en ficelle (aussi appelées Bolas)
+-Des quilles de Jonglage
+-des cerceaux/houla hoop
+-des bâtons de jonglage (aussi appelés staffs)
+-des balles de jonglage
+-des drums
+-des échasses pour enfant
+-et plein d’autres choses peut-être!

+

Nous fournissons une partie du matériel, et vous encourageons a ramener du matériel si vous en avez parmi cette liste:
+-des boites de conserve vides
+-des boites de café en gros métaliques (cylindriques) vides
+-des balles de tennis (pas de balles de dollarama dont la qualité est insuffisante)
+-des bas longs
+-du tissu (tailles et couleurs variées)
+-des bouteilles de liqueurs de 1L et 2L
+-des goujeons a quilles
+-du tape de hockey
+-du ducktape
+-du tape electrique
+-du tape a peinture
+-des embouts de chaise
+-des embouts de béquilles
+-des rondelles métaliques
+-des vis a bois
+-du tape transparent
+-des ballounes
+-du cordage en jute
+-du cordage en plastique
+-des lacets
+-des graines de plastique pour remplir les pois
+-des chambres a air de vélo
+-des manches a balai
+-des béquilles
+-des cannes
+-du fil de fer
+-des vieux stores de maison
+-du riz et des lentilles ou autre du genre (qui ne sont plus consomables)
+-de la crazy glue
+-des jonctions de plomberie
+-de la colle a PVC
+-du tuyau de plomberie: Pour les cerceaux (le mieux selon moi est celui en pvc blanc de 2.2cm de diamètre qu’on peux trouver pour environ 14$ a canadian tyre on peut faire environ 2 houla hoop avec la longeur vendue)
+-du tape double face (aussi appelé tape a tapis)
+-des bouteilles de 591mL
+-du tape de hockey coloré
+-tape a mesurer
+-exacto
+-pistolet a colle chaude
+-entonnoirs
+-pince-outil
+-scie a bois
+-ciseaux
+-tournevis

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2013/12/01/etudes-en-actionstudy-in-action-appel-de-presentation/index.html b/2013/12/01/etudes-en-actionstudy-in-action-appel-de-presentation/index.html new file mode 100644 index 0000000..dad0661 --- /dev/null +++ b/2013/12/01/etudes-en-actionstudy-in-action-appel-de-presentation/index.html @@ -0,0 +1,210 @@ + + + + + + + + + +Études en action/Study in action : Appel de présentation – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Études en action/Study in action : Appel de présentation

+ +
+ +
+ +

Études en action/Study in action : Colloque de recherche universitaire et communautaire

+

Le GRIP UQAM s’allie avec les GRIP Concordia et McGill pour participer à la Conférence Études en action/Study in action qui vise à permettre aux étudiant-e-s de premier cycle universitaire de présenter leurs travaux.

+

Études en action est une conférence pour les étudiant-e-s de premier cycle qui vise à créer des liens entre les étudiant-e-s et des luttes populaires et communautaires. C’est un lieu où les étudiant-e-s de premier cycle peuvent présenter les résultats de leurs recherches, approfondir leurs connaissances sur des enjeux sociaux et environnementaux et tisser des liens avec des groupes communautaires. La conférence est organisée par un collectif d’étudiant-e-s par le biais des Groupes de recherche d’intérêt public de l’Université Concordia, de l’Université McGill et de l’Université du Québec à Montréal et elle aura lieu du 21 au 24 mars 2014.

+

APPEL À CONTRIBUTIONS PAR LES ÉTUDIANT-E-S & GROUPES COMMUNAUTAIRES

+

Date limite pour la soumission des textes : 17 janvier 2014

+

Études en Action accepte présentement des propositions de communication et de présentations en anglais ou en français par des étudiantEs du premier cycle de Montréal et des alentours! Nous cherchons des propositions de divers formats sur une variété de sujets. Si votre projet, complété ou en cours, traite d’un des sujets suivants, nous vous encourageons à nous en faire part, que ce soit un essai, un projet de recherche, une présentation ou un atelier.

+

Le thème des présentations devra tourner autour su sujet de lauto-détermination, dans une perspective de:
+· La souveraineté autochtone et la décolonisation
+· Au delà des gouvernements: l’autonomie et la démocratie
+· Économie, austérité et anticapitalisme
+· L’incarcération et les prisons
+· Projet de loi 60/La charte des valeurs québécoises
+· Accessibilité
+· La justice environnementale et le racisme environnemental
+· Espaces publics, pauvreté et gentrification/embourgeoisement
+· Éducation radicale et pédagogie
+· Souveraineté alimentaire
+· Genre et féminisme
+· Sexe et sexualité

+

Prenez note qu’il n’est pas nécessaire de soumettre un projet complet avant la date limite, le17 janvier 2014, mais uniquement une proposition de communication (voir ci-dessous) et un résumé soulignant comment votre contribution est liée à notre mandat de justice sociale et environnementale. Études en Action ne cherche pas seulement à brouiller les frontières interdisciplinaires, mais aussi à mêler les barrières entre le savoir universitaire et le savoir populaire. Nous vous encourageons à interpréter notre mandat aussi librement que possible.

+

DIRECTIVES DE SOUMISSION POUR LES ÉTUDIANT-E-S:

+

Veuillez soumettre un résumé de votre proposition de 250 mots. Vous pouvez aussi nous envoyer la totalité de votre projet s’il est déjà complété. Votre contribution peut prendre l’une des formes suivantes :
+a) une présentation de 15 à 20 minutes de votre essai ou projet de recherche dans le cadre d’un panel ;
+b) un atelier d’une heure ;

+

Voici quelques exemples de présentations du colloque de 2013
+· De quel genre d’allié.e.s parle-t-on ? : réflexions sur le pouvoir et la politique pendant la grève étudiante de 2012 à Concordia
+· Apprendre et faire: découvrir la scolarité à domicile à Montréal
+· Les droits des travailleur.e.s et les travailleur.e.s temporaires étrangers
+· Nous sommes tou.te.s des personnes du traité : nouvelles géographies de solidarité dans Idle No More.
+· Mémoire, espace et identité : la trajectoire migratoire urbaine des personnes d’Asie du Sud dans Parc Ex.

+

Envoi des propositions au grip@uqam.ca avant le 17 JANVIER 2014.

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2014/01/07/janvier-2014-bonne-rentree/index.html b/2014/01/07/janvier-2014-bonne-rentree/index.html new file mode 100644 index 0000000..80c0f1e --- /dev/null +++ b/2014/01/07/janvier-2014-bonne-rentree/index.html @@ -0,0 +1,212 @@ + + + + + + + + + +JANVIER 2014/// Bonne rentrée! – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

JANVIER 2014/// Bonne rentrée!

+ +
+ +
+ +

Bonne rentrée à tous et à toutes!

+

Le GRIP-UQAM célèbre cette année ses 20 ans! Surveillez vos courriels, des activités thématiques sont prévues tout au long de la session d’hiver.
+

+

S’inscrire à l’infolettre du GRIP UQAM->https://eepurl.com/IrF_z

+

Le GRIP en bref:

+

Le Groupe de Recherche d’Intérêt Public est un collectif universitaire ouvert à tous et à toutes les étudiantEs désirant s’impliquer, s’interroger et agir sur les questions environnementales et sociales!

+

Le GRIP-UQAM est aussi un observatoire critique, une pouponnière d’idées et un lieu de diffusion permettant d’envisager le changement social en offrant des informations et des outils à la communauté uqamienne afin de mieux saisir les enjeux qui y sont liés!

+

Le GRIP-UQAM c’est également plus de 10 comités qui oeuvrent à transformer l’université et la ville. Pour en savoir plus, visitez la section « comités » de notre site web

+

///// APPEL À CONTRIBUTIONS PAR LES ÉTUDIANT-E-S & GROUPES COMMUNAUTAIRES /////

+

Études en action/Study in action : Colloque de recherche universitaire et communautaire

+

Le GRIP UQAM s’allie avec les GRIP Concordia et McGill pour participer à la Conférence Études en action/Study in action qui vise à permettre aux étudiant-e-s de premier cycle universitaire de présenter leurs travaux.

+

Études en action est une conférence pour les étudiant-e-s de premier cycle qui vise à créer des liens entre les étudiant-e-s et des luttes populaires et communautaires. C’est un lieu où les étudiant-e-s de premier cycle peuvent présenter les résultats de leurs recherches, approfondir leurs connaissances sur des enjeux sociaux et environnementaux et tisser des liens avec des groupes communautaires. La conférence est organisée par un collectif d’étudiant-e-s par le biais des Groupes de recherche d’intérêt public de l’Université Concordia, de l’Université McGill et de l’Université du Québec à Montréal et elle aura lieu du 21 au 24 mars 2014.

+

Date limite pour la soumission des textes : 17 janvier 2014

+

Consultez l’article complet pour toute l’information/
+—————————————————————————————————————–

+

Journal l’intérêt public

+

Dans les prochaines semaines sera publié un nouveau numéro du Journal l’intérêt public. Ce numéro traitera de la question des luttes écologistes et du changement social.

+

Nous avons hâte de vous partager tout cela autour d’un lancement bien festif ( à suivre…)!

+

Médi@s libres : soirées de projections

+

Le collectif Médi@s libres prépare une série de projections à la librairie Biosfaire (4571 rue St-Denis).
+Les projections auront lieu en soirée. Plus de détails à venir.

+

15 janvier : L’autogestion, une révolution économique
+15 janvier : L’autogestion, une révolution économique
+12 février : Anarchronique
+12 mars : Courts métrages sur l’anti-colonialisme et l’écologie
+16 avril : Quel plan pour le nord?

+

CRAPAUD: visite guidée

+

Mercredi 15 janvier de 12h30 à 14h : Agriculture et écologie sociale à l’UQAM

+

Le CRAPAUD participera au Défi-Énergie de l’UQAM et présentera une activité nommée : Agriculture et écologie sociale à l’UQAM : tour guidé du rucher, des jardins collectifs et d’initiatives méconnues.

+

Point de départ : rez-de-chaussée du pavillon Design, 1440 rue Sanguinet

+

Plus d’informations sur le CRAPAUD :
+https://www.crapaud.uqam.ca/
+https://www.ruchercollectif.uqam.ca/

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2014/01/17/janvier/index.html b/2014/01/17/janvier/index.html new file mode 100644 index 0000000..eca287d --- /dev/null +++ b/2014/01/17/janvier/index.html @@ -0,0 +1,234 @@ + + + + + + + + + +Janvier! – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Janvier!

+ +
+ +
+ +

À l’horaire

+

-S.O.S territoire Mobilisation

+

-CELLUL et La Déferle: Local anarchiste de critique et de luttes sociales

+

-CRAPAUD: « Mise en marché et distribution des produits de l’agriculture urbaine »

+

-Ailleurs dans la communauté

+

______________________

+

S.O.S territoire : Mobilisation

+

Appui à la protection du lac Kipawa: Appel à la mobilisation

+
Ça se passe en Abitibi, près de la frontière avec l’Ontario. Il y a un gros projet d’exploitation de terres rares juste à côté du Lac. Ça pourrait avoir de grands impacts sur le lac en question et les rivières des environs, ce qui finalement, affecterait tout le monde. C’est une lutte éloignée qui passe vraiment sous le radar en ce moment.

+

Un blog dédié à cette lutte (qui date un peu): https://savekipawalake.blogspot.ca/
+Plus d’informations pertinentes sur Mining Watch: https://www.miningwatch.ca/search/node/kipawa

+

Des actions de solidarité sont à prévoir. Si vous êtes intéressé.e.s à vous impliquer dans le dossier, ou d’autres similaires, laissez-nous savoir :
+https://sosterritoire.grip-uqam.org/content/tenez-moi-informé-des-activités
+(Nouveau site web en construction, c’est la seule page valide pour l’instant)

+

Journée Interculturelle Militant-e-s/Premières Nations

+

Avec l’aide d’étudiant-e-s en travail social, nous organisons pour cette session une journée (ou demi-journée) sur l’interculturalité, qui explorera plus précisément le thème des relations entre autochtones et non-autochtones dans le contexte du militantisme.
+Si vous êtes intéressé-e-s à vous impliquer pour l’élaboration de cette activité, contactez S.O.S territoire ici:
+https://sosterritoire.grip-uqam.org/content/tenez-moi-informé-des-activités
+grip@uqam.ca

+
+

+

CELLUL et La Déferle : Local anarchiste de critique et de luttes sociales

+
Dimanche le 19 janvier 19h : Nowhere de Gregg Araki Film Queer

+

Cinochelaga
+Film sur l’adolescence (celle qui vit, qui expérimente).
+Critique de la société américaine.
+https://www.youtube.com/watch?v=yL7okbGR5Uw

+

Mardi le 21 janvier 2014 19h : Soirée de propositions

+

Pour organiser la programmation du mois suivant. Moment informel, où toute personne qui souhaite présenter un projet d’atelier,
+et/ou un évènement, est conviée à faire part de ses propositions. La soirée est ouverte à tous et toutes et ce, que l’on souhaite ou
+non proposer un évènement. Toute proposition à caractère raciste, spéciste, sexiste, homophobe (!) sera rejetée d’emblée.

+

Mercredi le 22 janvier à 19h : Atelier pratique sur le consentement en mixité

+

Abordons le concept du consentement de manière pratique : Comment dire non? Comment donner son consentement? Comment le reprendre?
+Comment le demander? Comment l’entendre? Comment aller le vérifier? Connaitre ce qui relève du non consentement?

+
+

+

+

CRAPAUD: « Mise en marché et distribution des produits de l’agriculture urbaine »

+
Mercredi le 29 janvier 12h30 à 14h

+

Dans le cadre de sa série de séminaires 2013-2014, le CRAPAUD et le Laboratoire sur l’agriculture urbaine (AU/LAB) de l’Institut des sciences de l’environnement sont heureux d’organiser un midi-panel avec trois intervenant-e-s qui sont impliqué-e-s de près dans la mise en marché et la distribution des produits de l’agriculture urbaine, soit Gratia Lapointe du Nutri-Centre LaSalle, Maxime St-Denis du Carrefour alimentaire Centre-Sud et Tim Murphy du Santropol Roulant. Le panel vise à dresser un portrait de la situation actuelle, des défis et des potentialités de la distribution et de la mise en marché de la production agricole urbaine.

+

UQAM Pavillon Président-Kennedy (PK) Local PK-3210
+Pour plus d’informations: https://agriurbain.ning.com/events/event/show?id=3832755%3AEvent%3A39389&xgi=1w0IjF8cN4oa3k&xg_source=msg_invite_event

+
+

+

Ailleurs dans la communauté

+

Harper No More

+

Appel à l’organisation d’une journée d’action nationale pour dénoncer les agissements du gouvernement Harper.
+Samedi le 1er mars 2014
+En soutien aux revendications territoriales des premières nations ; pour la justice environnementale, la démocratie, etc.
+Déjà une quinzaine de villes à travers le Canada se mobilisent ce jour là. Pour Montréal, voir au lien suivant :
+https://www.facebook.com/events/195789330629405/195810257293979/

+

Projections du documentaire Québékoisie

+

Au Cinéma Beaubien de Montréal du 24 au 30 janvier.
+https://www.facebook.com/quebekoisie
+

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2014/02/11/assemblee-generale-mercredi-17h-a-2625/index.html b/2014/02/11/assemblee-generale-mercredi-17h-a-2625/index.html new file mode 100644 index 0000000..de9f3ee --- /dev/null +++ b/2014/02/11/assemblee-generale-mercredi-17h-a-2625/index.html @@ -0,0 +1,199 @@ + + + + + + + + + +Assemblée générale mercredi 17h : A-2625 ! – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Assemblée générale mercredi 17h : A-2625 !

+ +
+ +
+ +

+

Ce mercredi 12 février, 17h au A-2625

+

À l’ordre du jour :

+

+
    +
  • postes ouverts et entérinements au C.A. et C.E.
  • +
  • la politique des comités
  • +
  • la politique de subvention
  • +
  • adoption des états financiers
  • +
  • adoption du rapport d’activité 2012-2013 du GRIP et de ses comités
  • +
  • reconnaissance des comités du GRIP
  • +
+

Pour devenir un comité du GRIP : voici les infos

+

Pour lire les documents préparatoires (propositions, postes ouverts, dernier pv, etc.) : ils sont ici

+

Pour inviter du monde via Facebook : l’événement !
+

+

Est membre du GRIP tout.e étudiant.e de l’UQAM ainsi que les gens s’étant impliquées au moins 10 heures durant l’année.

+

L’Assemblée est une bonne façon pour en savoir plus sur tous les comités et leurs projets… Bienvenue !

+


+

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2014/02/17/etudes-en-actionstudy-in-action-a-la-recherche-de-benevoles/index.html b/2014/02/17/etudes-en-actionstudy-in-action-a-la-recherche-de-benevoles/index.html new file mode 100644 index 0000000..2b61280 --- /dev/null +++ b/2014/02/17/etudes-en-actionstudy-in-action-a-la-recherche-de-benevoles/index.html @@ -0,0 +1,184 @@ + + + + + + + + + +Études en action/Study in action : À la recherche de bénévoles – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Études en action/Study in action : À la recherche de bénévoles

+ +
+ +
+ +

+

Le Groupe de recherche d’intérêt public (GRIP-UQAM) se joint pour la première année au colloque « Études en action/ Study in action », co-organisé par le GRIP-Concordia et le GRIP-McGill. Études en action est une conférence pour les étudiant-e-s de premier cycle qui vise à créer des liens entre les étudiant-e-s et des luttes populaires et communautaires. C’est un lieu où les étudiant-e-s de premier cycle peuvent présenter les résultats de leurs recherches, approfondir leurs connaissances sur des enjeux sociaux et environnementaux et tisser des liens avec des groupes communautaires.

+

La conférence aura lieu du 20 au 23 mars 2014. Nous sommes donc présentement à la recherche de bénévoles qui veulent s’impliquer dans le comité organisateur ou de manière ponctuelle pendant l’événement. Nous allons avoir besoin de bénévoles pour le comité bouffe, l’espace garderie, l’accueil des invités, l’accueil des participants, la logistique, le service d’alcool et de nourriture, la sécurité et pour être gardien-ne-s du senti.

+
Pour devenir bénévole envoyez-nous un courriel (S.V.P. précisez si c’est pour une implication ponctuelle ou pour le comité organisateur) : grip@uqam.ca
+

Pour plus d’informations: bit.ly/1aP0OjN

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2014/03/18/etudes-en-action-recherche-populaire-sur-la-justice-sociale-ateliers-discussions-et-art-presentes-a-concordia-mcgill-et-luqam-20-au-23-mars/index.html b/2014/03/18/etudes-en-action-recherche-populaire-sur-la-justice-sociale-ateliers-discussions-et-art-presentes-a-concordia-mcgill-et-luqam-20-au-23-mars/index.html new file mode 100644 index 0000000..0b678a8 --- /dev/null +++ b/2014/03/18/etudes-en-action-recherche-populaire-sur-la-justice-sociale-ateliers-discussions-et-art-presentes-a-concordia-mcgill-et-luqam-20-au-23-mars/index.html @@ -0,0 +1,272 @@ + + + + + + + + + +ÉTUDES EN ACTION : recherche populaire sur la justice sociale / ateliers, discussions et art présentés à  Concordia, McGill et l’UQÀM (20 au 23 mars) – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

ÉTUDES EN ACTION : recherche populaire sur la justice sociale / ateliers, discussions et art présentés à  Concordia, McGill et l’UQÀM (20 au 23 mars)

+ +
+ +
+ +

ÉTUDES EN ACTION 20 au 23 MARS, 2014

+

– Mettant en vedette la contribution d’étudiants, d’organisateurs communautaires et des artistes portant sur la justice sociale et environnementale.

+

– Ateliers, discussions et art présentés à Concordia, McGill et l’UQÀM.

+

– Gratuit et ouvert à tous.

+

Quelques-uns des thèmes abordés:

+

* Luttes d’auto-détermination * Réponses et résistance à la charte par des femmes musulmanes * Théories et pratiques d’écologie sociale * Art & Résistance * Résistance féministe autochtone* Luttes pour les droits des migrants * Justice environnementale * Embourgeoisement et sécurité * Développement communautaire * Extraction minière & combustibles fossiles * Race & Intersectionalité * Résistance autochtone et décolonisation * Accessibilité, mobilité et auto-détermination corporelle et plus encore!

+

ÉTUDES EN ACTION est co-organisé par les Groupe de recherche d’intérêt publique (GRIP) du Québec à Concordia, McGill et de l’UQÀM.

+

Info: www.qpirgconcordia.org/studyinaction

+

* Jeudi, 20 mars, 18h30 à l’UQÀM

+

Panel d’ouverture: Luttes d’auto-détermination

+

(Tables d’information et collations à partir de 17h30)

+

Salle SH-3420, Pavillon Sherbrooke

+

200, rue Sherbrooke Ouest (au coin Jeanne-Mance)

+

métro Place-des-Arts

+

carte: https://goo.gl/maps/BCmMk

+

Membres du panel confirmée:

+

– Denise Jourdain & Elyse Vollant (Uashat-Maliotenam), sur la résistance autochtone au Plan Nord et la défense des terres traditionnelles;

+

– Émilie Laliberté (Stella), les efforts de résistance par et pour les travailleuses du sexe;

+

– Laurence Parent (RAPLIQ) La défense des droits des personnes ayant un handicap et l’auto-détermination ;

+

– Gabrielle Bouchard (Centre de lutte contre l’oppression des genres) l’auto-détermination du genre;

+

– Christina Xydous (GRIPQ Concordia) sur l’opposition antiraciste féministe au projet de loi 60 (Charte des valeurs).

+

Ce panel d’ouverture, en français (avec traduction chuchotée vers l’anglais), explorera diverse luttes d’auto-détermination contre l’oppression, pour mieux rejoindre tous nos efforts d’organisation collective et faire ressortir l’interrelation de ces luttes.

+

Au sujet des membres du panel:

+

Denise Jourdain et Elyse Vollant sont membres de la communauté Innu d’Uashat-Maliotenam sur la Côte Nord s’opposant au Plan Nord et luttant pour la défense de leurs terres ancestrales et leur culture. Émilie Laliberté fait partie de Stella, un organisme montréalais fondé en 1995 par et pour les travailleuses du sexe. Laurence Parent oeuvre auprès du Regroupement d’activistes pour l’inclusion au Québec (RAPLIQ) pour la défense des droits des personnes vivant avec des handicaps. Gabrielle Bouchard coordonne le groupe de soutient par les pairs ainsi que le programme de défense des droits Trans* au Centre de lutte contre l’oppression des genres. Christina Xydous travaille au GRIP-Q Concordia et est activiste ainsi qu’organisatrice antiraciste, féministe, basée à Montréal.
+* Vendredi, 21 mars, 14h à 16h à McGill

+

ATELIER: Réponses et résistance de femmes musulmanes à la charte des valeurs québécoises
+Salle Madeleine Parent, #203, Édifice SSMU
+3480, rue McTavish (au nord de Sherbrooke, au sud de des Pins)
+métro Peel
+carte: https://goo.gl/maps/CkI5u
+[plus de détails à venir]

+

* Vendredi, 21 mars, 16h à l’UQÀM

+

PANEL: La théorie et la pratique de l’écologie sociale

+

avec Bruno Massé (animation), Marcel Sévigny, Lucia Kowaluk et Denise Jourdain

+

Salle SH-2420, Pavillon Sherbrooke

+

200, rue Sherbrooke Ouest (coin Jeanne-Mance)

+

métro Place-des-Arts

+

carte: https://goo.gl/maps/BCmMk

+

[plus de détails à venir]

+

* Vendredi, 21 mars, 18h, dans les rues
+MANIFESTATION ET MARCHE:
+Contre le colonialisme, le racisme et la charte des valeurs (Projet de loi 60)

+

Rendez-vous: sortie du métro Mont-Royal

+

(Mt-Royal Est, entre Berri and Rivard)

+

Évènement marquant la Journée pour l’élimination de la discrimination raciale et l’anniversaire du massacre de Sharpeville, Afrique du Sud, 1960.

+

Organisé par l’Ensemble contre la Charte xénophobe. Soutenu par le GRIP Concordia, Solidarité Sans Frontière, Personne n’est illégal, l’association étudiante des cycles supérieurs de Concordia, Études en action (UQÀM, Concordia & McGill) et autres. Pour endosser cette manifestation, veuillez contacter: contrelachartexenophobe@gmail.com.

+

Les bases pour notre rassemblement contre la charte et pour cette démonstration sont soulignées dans cette déclaration communautaire: www.qpirgconcordia.org/p=4687&lang=fr

+

* Vendredi, 21 mars, 20h30 à l’UQÀM
+FILMS de Médi@s Libres

+

Salle SH-R810, Pavillon Sherbrooke

+

200, rue Sherbrooke Ouest (coin Jeanne-Mance)

+

métro Place-des-Arts

+

carte: https://goo.gl/maps/BCmMk

+

Soirée de documentaires critiques et engagés, presentés par le collectif Médi@s Libres. [Plus de détails à venir]

+

* 20 au 23 mars à Concordia

+

Exhibition ART EN ACTION

+

7e étage, Édifice Hall

+

1455 de Maisonneuve Ouest (entre Bishop and Mackay)

+

métro Guy-Concordia

+

carte: https://goo.gl/maps/be1oD

+

Art en action met en lumière l’expression artistique cernant des problématiques en justice sociale et environnementale, par le biais de divers mediums, incluant: le dessin, la peinture, la photographie, la performance, le film et la vidéo, des installations, du spoken word, des zines, des collages, des aquarelles, des affiches, et des gravures. Cette édition d’Art en action inclura des soumissions reçues pour L’art contre leur charte.
+[Détails additionnels à venir]

+

* Samedi & dimanche, 22 et 23 mars, 10h-17h à Concordia

+

ÉTUDES EN ACTION: 9 panels & 3 ateliers

+

Recherche populaire sur la justice sociale par des étudiants de premier cycle ainsi que des organisateurs communautaires.

+

7e étage, Édifice Hall

+

1455 de Maisonneuve Ouest (entre Bishop et Mackay)

+

métro Guy-Concordia

+

carte: https://goo.gl/maps/be1oD

+

Panels:

+

* Résistance féministe autochtone (Lael Kim, Alisha Mascarenhas, Molly Swain)

+

* Luttes migrantes (Marwa AbuSara, Annie Preston, Camila Rivas-Garrido, Dignidad Migrante)

+

* Justice environnementale (Jordan de Bellescize, Cameron Butler, Robin Reid-Fraser)

+

* Embourgeoisement & Sécurité (Kyle McLoughlin, Brooke Nancekivell, Mike Selmani, Aaron Vansintjan)

+

* Développement Communautaire (Cynthia Albertin, Allison Jones, Caroline Mallette)

+

* Extraction minière et combustibles fossiles (Aaron Barcant, Tyler Michaels, Sean Phipps)

+

* Race & Intersectionalité (Francis Dolan, Caroline Huang, Délice Mugabo, Laudan Vaezmir)

+

* Résistance & Décolonisation autochtone (Tyler Lawson, Alexandra Olshefsky, Victoria Watson)

+

* Panel de fermeture: Accessibilité, Mobilité et Auto-détermination Corporelle (Accessibiliser Montréal; Chelsea Barnett; Louis Donelle, Sophie Dorion & Marilou Favreau-Léger; AJ Withers)

+

Ateliers:

+

* Ta radio est une bombe Le pouvoir explosif et le potentiel des médias indépendants. (Le collectif des nouvelles CKUT)

+

* L’exploitation minière canadienne en Amérique Latine et au Congo (le McGill Research Group Investigating Canadian Mining in Latin America, MICLA, & STAND)

+

* Comment découvrir ce qu’ils ne veulent que l’on sache: une introduction aux lois sur l’accès à l’information et procédures reliées.

+

Pour tous les évènements:

+

– Gratuit et pour tous!

+

– Accessible par fauteuil roulant.

+

– S.V.P contactez-nous pour tous besoins d’accessibilité

+

– Service de gardiennage gratuit lors des évènements (sauf pour Art en action et la marche du 21 mars)

+

– Traduction chuchotée vers l’anglais et le français disponible pour tous les évènements.

+

– Repas végétalien servis samedi et dimanche..

+

– Participe à un atelier ou à tous le ateliers!

+

ÉTUDES EN ACTION est co-organisé par les Groupe de recherche d’intérêt publique (GRIP) de Concordia, McGill et l’UQÀM.

+

Info: www.qpirgconcordia.org/studyinaction

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2014/03/18/le-grip-uqam-fete-20-ans-decologie-sociale/index.html b/2014/03/18/le-grip-uqam-fete-20-ans-decologie-sociale/index.html new file mode 100644 index 0000000..64fffa7 --- /dev/null +++ b/2014/03/18/le-grip-uqam-fete-20-ans-decologie-sociale/index.html @@ -0,0 +1,216 @@ + + + + + + + + + +Le GRIP-UQAM fête 20 ans d’écologie sociale – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Le GRIP-UQAM fête 20 ans d’écologie sociale

+ +
+ +
+ +

+

Dans la cadre de son 20ème anniversaire, le GRIP-UQAM fait la fête !

+

Le 21 mars prochain, nous vous proposons une journée bien remplie :

+

16h : Panel « Théories et pratiques de l’écologie sociale » au SH2420.

+

Invité-e-s :
+– Bruno Massé, coordonnateur général du Réseau québécois des groupes écologistes (animation);
+– Marcel Sévigny, militant écologiste et communautaire;
+– Lucia Kowaluk, Co-fondatrice du Centre d’écologie urbaine de Montréal;
+– Michael Brophy, co-coordonnateur du GRIP-UQAM

+

18h : Souper, kiosques et ateliers au Hall du Café Sain Fractal. Service d’alcool dans le café Sain Fractal.

+

19h : Panel « Problématiques entourant la pérennité des médias indépendants québécois » – Café Sain Fractal (SHR380)
+Invité-e-s :
+– Franklin Lopez, Submedia
+– Olivier D. Asselin, Médi@s Libres
+– Arij Riahi, Coop Média
+– Bruno Dubuc, Couac
+– Nicolas Falcimaigne, Journal Ensemble
+– Amy Miller, directrice et productrice documentaire « The Carbon Rush », « No Land No Food No Life », « Myths for Profit: Canada’s Role in Industries of War and Peace »

+

20h30 : Projection de documentaires engagés et critiques par le collectif Médi@s Libres (SHR810)

+

21h30 : Soirée dansante avec les groupes BarbuZébelle et Gypsy Kumbia Orchestra au Hall du Café Sain Fractal avec service d’alcool.

+

Venez en grand nombre ! C’est GRATUIT !

+

/////

+

Bruno Massé
+https://www.daemonflower.com/?lang=fr
+https://rqge.qc.ca/

+

Marcel Sévigny
+https://www.ecosociete.org/t056.php

+

Lucia Kowaluk
+https://ccmp-mpcc.com/tag/lucia-kowaluk/

+

Médi@ Libres
+https://www.grip-uqam.org/M@L

+

Amy Miller
+https://www.cinemapolitica.org/artists/amy-miller

+

BarbuZébelle
+https://www.facebook.com/BarbuZebelle

+

Gypsy Kumbia Orchestra
+https://www.gypsykumbia.com/

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2014/04/10/le-grip-uqam-engage-un-e-charge-e-de-projet-pour-le-developpement-dun-espace-communautaire/index.html b/2014/04/10/le-grip-uqam-engage-un-e-charge-e-de-projet-pour-le-developpement-dun-espace-communautaire/index.html new file mode 100644 index 0000000..c5e2c3f --- /dev/null +++ b/2014/04/10/le-grip-uqam-engage-un-e-charge-e-de-projet-pour-le-developpement-dun-espace-communautaire/index.html @@ -0,0 +1,185 @@ + + + + + + + + + +Le GRIP UQAM engage un-e chargé-e de projet pour le développement d’un espace communautaire – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Le GRIP UQAM engage un-e chargé-e de projet pour le développement d’un espace communautaire

+ +
+ +
+ +
+

Le GRIP UQAM a entamé une réflexion participative sur un projet d’envergure à venir au cours de l’année courante. Concrétement, nous désirons développer un nouvel espace communautaire dans l’UQAM ou à proximité de l’UQAM, certains lieux ayant déjà été ciblés. L’idée sous-tendant le développement de ce nouvel espace communautaire est de favoriser la convergence entre nos projets et d’étendre leur portée, tout en assurant l’autonomie financiére de cet espace. Ceci pourrait se traduire en un espace ayant pignon sur rue et abritant une coopérative de solidarité autogérée. Le mandat consiste donc en l’organisation de cette réflexion afin d’ancrer ce projet d’envergure dans les valeurs, les besoins et les ressources du GRIP UQAM.

+

Pour consulter l’offre: Offre d’emploi, chargé de projet au GRIP UQAM, projet d’envergure

+

Date limite pour postuler: le 23 avril 2014

+
+

Faire parvenir sa candidature ici: grip@uqam.ca

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2014/04/17/assemblee-generale-plan-daction-budgets-et-projet-denvergure/index.html b/2014/04/17/assemblee-generale-plan-daction-budgets-et-projet-denvergure/index.html new file mode 100644 index 0000000..020e1a3 --- /dev/null +++ b/2014/04/17/assemblee-generale-plan-daction-budgets-et-projet-denvergure/index.html @@ -0,0 +1,193 @@ + + + + + + + + + +Assemblée générale: Plan d’action, budgets et projet d’envergure – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Assemblée générale: Plan d’action, budgets et projet d’envergure

+ +
+ +
+ +

Le GRIP UQAM vous invite à son AG annuelle de Plan d’action et de budgets. Ce sera le moment idéal pour connaître les activités prévues par les comités pour l’année à venir. Nous discuterons aussi du projet d’ouverture d’un espace communautaire.

+

Bienvenue à toutes et tous!
+Souper et café fourni.

+

Lieu: UQAM. Local à déterminer.
+Quand: 4 juin, 17h.

+

Voici l’ordre du jour:

+

0. Ouverture
+1. Proposition au sujet de la politique du fond discrétionnaire
+2. Présentation et propositions pour le projet d’envergure
+3. Plan d’action des comités
+4. Budget
+5. Varia
+6. Fermeture

+

Pour plus d’information

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2014/04/17/le-grip-uqam-vous-invite-a-un-vin-et-fromage-reflexions-pour-un-espace-communautaire/index.html b/2014/04/17/le-grip-uqam-vous-invite-a-un-vin-et-fromage-reflexions-pour-un-espace-communautaire/index.html new file mode 100644 index 0000000..b2d5193 --- /dev/null +++ b/2014/04/17/le-grip-uqam-vous-invite-a-un-vin-et-fromage-reflexions-pour-un-espace-communautaire/index.html @@ -0,0 +1,184 @@ + + + + + + + + + +Le GRIP UQAM vous invite à  un Vin et fromage: Réflexions pour un espace communautaire – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Le GRIP UQAM vous invite à  un Vin et fromage: Réflexions pour un espace communautaire

+ +
+ +
+ +

Le GRIP UQAM a entamé une réflexion participative sur un projet d’envergure à venir au cours de l’année courante.

+

Nous souhaitons développer un nouvel espace communautaire dans l’UQAM ou à proximité de l’UQAM, certains lieux ayant déjà été ciblés.

+

L’idée sous-tendant le développement de ce nouvel espace communautaire est de favoriser la convergence entre nos projets et d’étendre leur portée, tout en assurant l’autonomie financiére de cet espace. Ceci pourrait se traduire en un espace ayant pignon sur rue et abritant une coopérative de solidarité autogérée.

+

Bienvenue à toutes et tous qui souhaitent participer à un tel projet et/ou participer à la discussion collective!

+

Pour plus d’informations

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2014/05/08/compte-rendu-de-la-premiere-rencontre-de-reflexion-sur-lespace-communautaire/index.html b/2014/05/08/compte-rendu-de-la-premiere-rencontre-de-reflexion-sur-lespace-communautaire/index.html new file mode 100644 index 0000000..fb5b8de --- /dev/null +++ b/2014/05/08/compte-rendu-de-la-premiere-rencontre-de-reflexion-sur-lespace-communautaire/index.html @@ -0,0 +1,182 @@ + + + + + + + + + +Compte-rendu de la première rencontre de réflexion sur l’espace communautaire – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Compte-rendu de la première rencontre de réflexion sur l’espace communautaire

+ +
+ +
+ +

Le GRIP UQAM a entamé une réflexion participative à propos d’un projet d’envergure à venir au cours de l’année courante. Nous souhaitons développer un nouvel espace communautaire à proximité de l’UQAM, certains lieux ayant déjà été ciblés.L’idée sous-tendant le développement de ce nouvel espace communautaire est de favoriser la convergence entre nos projets et d’étendre leur portée, tout en assurant l’autonomie financière de cet espace. Ceci pourrait se traduire en un espace ayant pignon sur rue et abritant une coopérative de solidarité autogérée.

+

Un vin et fromage s’est tenu au Café Aquin le 23 avril dernier afin de tenir une réflexion collective à ce sujet, en présence des personnes intéressées. Une soixantaine de personnes sont venues échanger leurs idées au sujet de leur vision pour un espace communautaire idéal.

+

Lire le résumé: Espace communautaire-résumé

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2014/05/30/documents-preparatoire-et-ordre-du-jour-pour-lassemblee-generale-du-4-juin/index.html b/2014/05/30/documents-preparatoire-et-ordre-du-jour-pour-lassemblee-generale-du-4-juin/index.html new file mode 100644 index 0000000..6abd8cb --- /dev/null +++ b/2014/05/30/documents-preparatoire-et-ordre-du-jour-pour-lassemblee-generale-du-4-juin/index.html @@ -0,0 +1,197 @@ + + + + + + + + + +Documents préparatoires et ordre du jour pour l’assemblée générale du 4 juin – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Documents préparatoires et ordre du jour pour l’assemblée générale du 4 juin

+ +
+ +
+ +

Assemblée générale de plans d’action, budgets et espace communautaire

+

Les documents préparatoires pour l’assemblée générale sont maintenant disponibles ici

+

Lieu: DS-2585

+

Quand: 4 juin – 17h

+

L’évènement facebook

+

Étudiant-e-s de l’UQAM, vous êtes membres!

+

 

+

Modification à  la proposition d’ordre du jour

+

1. Ouverture
+2. Élection de l’animation et du secrétariat
+3. Adoption de l’ordre du jour
+4. Adoption du procès-verbal du 12 février 2014
+5. Plans d’action 2014-15
+6. Budgets 2014-15
+7. Fond discrétionnaire et ajustements aux budgets en cours d’année
+8. Projet d’envergure : espace communautaire
+9. Varia
+10. Fermeture

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2014/06/06/appliquer-pour-une-subvention-du-grip-uqam/index.html b/2014/06/06/appliquer-pour-une-subvention-du-grip-uqam/index.html new file mode 100644 index 0000000..10be9aa --- /dev/null +++ b/2014/06/06/appliquer-pour-une-subvention-du-grip-uqam/index.html @@ -0,0 +1,190 @@ + + + + + + + + + +Appliquer pour une subvention du GRIP UQAM – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Appliquer pour une subvention du GRIP UQAM

+ +
+ +
+ +

Le GRIP-UQAM soutient et commandite désormais des initiatives et des évènements communautaires/militants grâce à son fond de subvention. Les groupes peuvent y appliquer pour obtenir de l’argent ou pour accéder aux ressources du GRIP (Photocopies, soutien administratif, locaux, matériel commun, transport, etc.). La somme allouée aux projets dépend du nombre de demandes reçues pendant une période de subvention donnée et n’indique en aucun cas un jugement sur la valeur du projet de la part du conseil d’attribution des subventions.

+

À quel genre de projet s’adresse ces subventions?

+

Les subventions visent principalement à soutenir des évènements ou des activités organisées par des groupes qui n’ont pas facilement accès à d’autres sources de financement. La demande de subvention doit idéalement être présentée avant la tenue de l’évènement ou de l’activité. Les subventions sont attribuées aux groupes partageant le code d’éthique du GRIP et qui interviennent sur des enjeux de justice sociale et environnementale.

+

La perspective soutenue par le GRIP-UQAM vise la décentralisation de la prise de décisions et des choix de projet en se basant sur la prise d’initiatives autogérées dans un processus de démocratie participative qui vise le consensus, dans le meilleur des cas.

+

Le comité d’attribution de subventions a également comme critère de sélection l’objectif de contrer les rapports de domination liés aux genres, au langage, aux classes, aux cultures, aux sociétés, et ce, en adoptant une attitude communautaire et inclusive, d’ouverture, de respect et de communication non-violente, tout en gardant en tête des valeurs et des pratiques écologiques, sociales et anticolonialistes.

+

À qui s’adressent les subventions?

+

Les subventions exclues les organismes à but lucratif, les comités du GRIP-UQAM (sauf les comités en devenir), ainsi que les partis politiques. Toutes personnes ou groupes ne faisant pas parties des catégories exclues peuvent présenter une demande de subvention.

+

Quel genre de subvention peux-t-on recevoir?

+

Le montant des subventions varie de mois en mois dépendant du nombre de demandes de subventions reçues et de la quantité donnée dans les mois précédents. Les subventions sont d’un maximum de 500$, mais un groupe peut faire plusieurs demandes de subventions (une par mois, pendant plusieurs mois de suite).

+

Comment appliquer? Il faut remplir le Formulaire demande de subvention et l’envoyer à l’adresse suivante : subvention.grip@gmail.com.

+

*Veuillez noter que la section « Description du projet » doit contenir le nom de trois personnes impliquées dans le projet, étudiantes à l’UQAM ou non.

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2014/06/12/suivis-assemblee-generale-du-4-juin-2014/index.html b/2014/06/12/suivis-assemblee-generale-du-4-juin-2014/index.html new file mode 100644 index 0000000..efaf98c --- /dev/null +++ b/2014/06/12/suivis-assemblee-generale-du-4-juin-2014/index.html @@ -0,0 +1,181 @@ + + + + + + + + + +Suivis assemblée générale du 4 juin 2014 – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Suivis assemblée générale du 4 juin 2014

+ +
+ +
+ +

Le procès-verbal de l’assemblée générale du GRIP est désormais disponible : PV_AG-GRIP_4juin

+

De plus, les propositions adoptées en lien avec la formulation du projet d’espace communautaire sont disponibles: Ag espace communautaire.

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2014/09/17/marche-fermier-les-mercredis-a-luqam/index.html b/2014/09/17/marche-fermier-les-mercredis-a-luqam/index.html new file mode 100644 index 0000000..d53b963 --- /dev/null +++ b/2014/09/17/marche-fermier-les-mercredis-a-luqam/index.html @@ -0,0 +1,183 @@ + + + + + + + + + +Marché fermier les mercredis à  l’UQAM – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Marché fermier les mercredis à  l’UQAM

+ +
+ +
+ +

Dès la rentrée 2014, Aliments d’ici organise un Marché Fermier bio et local à l’UQAM !

+

Quand ? Du 10 septembre au 12 novembre, tous les mercredis, de 12h à 18h.

+

Où ? Sur la Place Pasteur (Saint Denis / Maisonneuve, en face du clocher de l’UQAM)

+

plus d’info : https://alimentsdici.info

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2014/10/22/party-fermhante-ateliers-musique-et-plaisir/index.html b/2014/10/22/party-fermhante-ateliers-musique-et-plaisir/index.html new file mode 100644 index 0000000..6e71c3a --- /dev/null +++ b/2014/10/22/party-fermhante-ateliers-musique-et-plaisir/index.html @@ -0,0 +1,184 @@ + + + + + + + + + +Party ferm’hanté: ateliers, musique et plaisir! – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Party ferm’hanté: ateliers, musique et plaisir!

+ +
+ +
+ +

Après avoir laissé fermenté notre party de rentrée, celui-ci s’est finalement transformé en une fête des morts et de la fermentation!

+

Venez découvrir les secrets de la fabrication de bière maison avec deux ateliers à 18h et 19h30.

+

Par la suite, bière pas chère, piste de dance, prestation de Vie d’Ange (groupe de musique trad moderne – on aime les paradoxes au GRIP!), bref du plaisir sur et certain!

+

Gratuit et ouvert à tous et à toutes!

+

Évènement facebook ici.

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2014/10/31/assemblee-generale-du-grip/index.html b/2014/10/31/assemblee-generale-du-grip/index.html new file mode 100644 index 0000000..1e8601a --- /dev/null +++ b/2014/10/31/assemblee-generale-du-grip/index.html @@ -0,0 +1,196 @@ + + + + + + + + + +Assemblée générale du GRIP – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Assemblée générale du GRIP

+ +
+ +
+ +

Le Groupe de recherche en intérêt public de l’UQAM vous invite à son assemblée générale d’automne ! Celle-ci aura lieu le mardi 11 novembre, à partir de 17h au local N-3745 à l’UQAM.

+

Venez en apprendre plus sur les activités des différents comités membres du GRIP (voir notre page «Comités» pour en apprendre plus sur nos comités). Une présentation des divers projets en cours du GRIP est aussi prévue, notamment en ce qui concerne la Coop de solidarité UQAM Quartier latin. Par ailleurs, les états financiers actuels seront aussi présentés.

+

 

+

L’ordre du jour proposé est le suivant:
+O. OUVERTURE

+

1. PROCÉDURES

+

2. BILAN DES COMITÉS

+

3. ÉTATS FINANCIERS

+

4. BALISES DE BUDGET

+

5. POINT D’INFORMATION: Postes disponibles sur le conseil exécutif et le conseil d’administration

+

6. COOPÉRATIVE DE SOLIDARITÉ

+

7. VARIA

+

8. FERMETURE

+

Pour voir les documents de préparation pour l’assemblée générale veuillez consulter le lien suivant (ce dossier sera mis à jour au fur et à mesure).

+

 

+

Collation et café servis sur place ! Venez nombreuses et nombreux !

+

Évènement facebook ici

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2014/11/18/capsules-videos-sur-lecologie-sociale/index.html b/2014/11/18/capsules-videos-sur-lecologie-sociale/index.html new file mode 100644 index 0000000..7efcf07 --- /dev/null +++ b/2014/11/18/capsules-videos-sur-lecologie-sociale/index.html @@ -0,0 +1,183 @@ + + + + + + + + + +Capsules vidéos sur l’écologie sociale – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Capsules vidéos sur l’écologie sociale

+ +
+ +
+ +

Dans le cadre des 20 ans du GRIP, le comité Médias Libres a réalisé une série de capsules vidéos portant sur différentes facettes du GRIP et de l’écologie sociale ! Jetez-y un coup d’oeil et n’hésitez pas à  les diffuser !

+

Présentation du Collectif de recherche en aménagement paysager et agriculture urbaine (CRAPAUD)

+

Témoignages sur le GRIP

+

Conférence: La théorie et la pratique de l’écologie sociale – Partie 1 et Partie 2

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2015/01/08/enjeux-energetiques-projection-midi-defi-energie/index.html b/2015/01/08/enjeux-energetiques-projection-midi-defi-energie/index.html new file mode 100644 index 0000000..7d7ebf6 --- /dev/null +++ b/2015/01/08/enjeux-energetiques-projection-midi-defi-energie/index.html @@ -0,0 +1,211 @@ + + + + + + + + + +Enjeux énergétiques – projection midi « Défi Énergie » – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Enjeux énergétiques – projection midi « Défi Énergie »

+ +
+ +
+ +

À l’occasion du « Défi énergie » à l’UQAM, les 8 et 9 janvier, de 12h à 14h, de courts films sur les enjeux énergétiques seront présentés dans l’Agora du pavillon J par le GRIP, groupe écologiste à l’UQAM, en collaboration avec Cinema out of the Box.

+

Un vélo de alimentera en énergie le projecteur vidéo, qui diffusera des films sur les oléoducs, l’extraction, les mouvements écologistes, les alternatives, etc.

+

Venez pédaler et participer au mouvement !

+

Les films qui seront présentés sont :

+

Submedia, Extraire du pétrole en Gaspésie, 11 min

+

https://www.submedia.tv/extraire-du-petrole-en-gaspesie/

+

IRIS, Le Québec devrait-il faire venir son pétrole d’Alberta ?, 1min

+

https://www.youtube.com/watch?v=JSSEyrU9i4M

+

Le modèle propagandiste de Pétrolia, 16min48

+

https://www.youtube.com/watch?v=1gkeOM9Uk4w&feature=youtu.be

+

Unistoten clan refuse pipeline projects, 2min30 (EN)

+

https://www.submedia.tv/stimulator/2014/06/17/unistoten-clan-refuse-pipeline-projects/

+

Marche des peuples #11 – L’Arrivée ! 10min27

+

https://www.youtube.com/watch?v=VHQ3K4YO7EQ

+

André Bélisle – 10min56

+

https://www.youtube.com/watch?v=Ybo48BBV3Xs

+

La recette du gaz de schiste – 6min

+

https://www.youtube.com/watch?v=X1gAAHMgk7s

+

La Ripaille

+

https://moisemarcouxchabot.com/la-ripaille/

+

Sauvons le hockey : les huileux contre les ours polaires

+

https://www.youtube.com/watch?v=Dr18g7brqmo

+

Bloquons les sables bitumineux – la marche en Alberta. 6min37

+

https://courtscritiques.com/2013/httpsvimeo-com70880413/

+

Déversement à Terrebonne – 8min50

+

https://courtscritiques.com/2013/un-deversement-denbridge-a-terrebonne-2-0/

+

La Brèche, Bulletin d’information sur les hydrocarbures Novembre 2014, 22 min.

+

https://la-breche.net/spip.php?article7

+

PASC, Tournée trous de mémoire, 24 min

+

https://vimeo.com/105698347

+

Climat humain – 4min43 – sur les iles qui seraient englouties (anglais)

+

https://courtscritiques.com/2014/climat-humain/

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2015/02/02/assemblee-generale-du-grip-2/index.html b/2015/02/02/assemblee-generale-du-grip-2/index.html new file mode 100644 index 0000000..abf35a2 --- /dev/null +++ b/2015/02/02/assemblee-generale-du-grip-2/index.html @@ -0,0 +1,221 @@ + + + + + + + + + +Assemblée générale du GRIP ! – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Assemblée générale du GRIP !

+ +
+ +
+ +

+

Le GRIP UQAM est heureux de vous inviter à son assemblée générale le mercredi 18 février à partir de 17h au local N-M140 (niveau métro). Durant cette assemblée, les membres du Conseil d’administration (CA), du Conseil exécutif (CE) et du Conseil d’attribution de subventions (CAS) seront élus. Par ailleurs, les comité du GRIP, anciens et nouveaux, devront être présents pour être reconnus. Nous discuterons aussi de la campagne actuelle contre les oléoducs.

+

L’assemblée est ouverte à tous les membres et la participation du plus grand nombre est vitale ! Café et collation seront servis.

+

Cliquez ici pour voir une carte de l’UQAM indiquant le Pavillon N (Paul Gérin Lajoie). Le moyen le plus simple de se rendre à l’AG est de rentrer dans le Pavillon N par le coin St-Denis et René-Levesque. Pour les personnes arrivant par le métro, il faut traverser les pavillons J, A et W avant de se rendre au N.

+

L’ordre du jour proposé est le suivant:

+

1. Ouverture

+

2. Procédures

+

3. États financiers

+

4. Élections

+

5.Reconnaissance des comités

+

6. Campagne contre les oléoducs

+

7. Coopérative de solidarité

+

8. Varia

+

9. Fermeture

+

Documents nécessaires

+

Réglements Généraux GRIP-UQAM

+

Reconnaissance des comités

+

Pour la procédure de reconnaissance des comités / formation de nouveau comité : cliquez ici.

+

Élections

+

Pour les postes de représentant.e.s étudiant.e.s au C.A., on cherche un.e étudiant.e par association facultaire :

+

Appel CA GRIP 2015-16

+

Devoirs des membres d’un C.A.

+

Le poste implique aussi d’être reconnu par son assemblée générale facultaire, avant ou après l’assemblée d’élections du GRIP.

+

Si vous souhaitez plutôt être membre du conseil exécutif du GRIP, plusieurs postes sont ouverts.

+

Que fait le conseil exécutif (CE) ?

+
C’est un lieu d’implication où l’on se trouve au coeur des enjeux sociaux et écologiques, à faciliter le travail de plusieurs comités en diffusant, coordonnant, accueillant de nouveaux projets, proposant des activités mobilisantesAvec les employé.e.s à la coordination, le CE, composé d’étudiant.e.s de l’UQAM, voit à divers suivis et décisions lors de sa rencontre hebdomadaire, sur une variété de sujets qui animent la vie de l’organisme.
+

àŠtre membre du CE implique une rencontre d’environ 2h par semaine et quelques suivis entre les rencontres.

+
+
L’exécutif se répartit les rôles suivants, tout en se partageant le travail souvent sur une base plus informelle par champs d’intérêt et disponibilités :
+
+
* Responsable général-e
+
* Responsable du secrétariat
+
* Responsable du trésor
+
* Responsable des communications
+
* Responsable du personnel
+
* Responsable de l’interne
+
* Responsable de l’externe
+
+
+

Pour en savoir plus, sur les différents postes, la mission du GRIP, etc. voir :

+

Réglements Généraux GRIP-UQAM

+

Contactez-nous à l’avance si vous souhaitez vous joindre à l’équipe, au 514.987.3000 poste 4077 ou en écrivant à grip(a)uqam.ca

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2015/03/12/organisons-nous-contre-les-oleoducs/index.html b/2015/03/12/organisons-nous-contre-les-oleoducs/index.html new file mode 100644 index 0000000..ed1951e --- /dev/null +++ b/2015/03/12/organisons-nous-contre-les-oleoducs/index.html @@ -0,0 +1,198 @@ + + + + + + + + + +Organisons-nous contre les oléoducs ! – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Organisons-nous contre les oléoducs !

+ +
+ +
+ +

+

Keystone XL, Énergie Est, Ligne 9B… les projets d’oléoducs se multiplient au Canada et aux États-Unis. Ces projets, malgré ce que Embridge, Trans Canada et cie veulent nous faire croire, mettent en péril des centaines d’écosystèmes, empiètent sur des territoires autochtones non-cédés, contribuent au réchauffement de la planète et à la dépendance aux hydrocarbures.

+

Heureusement, la résistance s’organise! Plusieurs initiatives citoyennes, autochtones ou étudiantes luttent, à l’UQAM et à travers le pays, afin de bloquer la construction de ces oléoducs.

+

Afin de mieux nous coordonner et nous organiser ensemble, le GRIP UQAM organise une assemblée générale extraordinaire le 17 mars à partir de 17h. À l’ordre du jour : discussions sur les stratégies et tactiques à emprunter, adoption d’un plan d’action afin de mobiliser la population étudiante, etc. Nous aurons la chance d’avoir des représentant-e-s de plusieurs groupes engagés dans la lutte aux oléoducs tels que la Coalition Vigilance Oléoducs (CoVO), du Réseau de la Marche des Peuples, et plus à venir !

+

Voici l’ordre du jour proposé:

+

0. Ouverture
+1. Animation et prise de note
+2. Informations sur les mobilisations en cours
+3. Proposition contre les hydrocarbures
+4. Plénières
+4.1 Division des groupes
+4.2 Plénière de 30 minutes en sous-groupe
+4.3 Plénière de retour de 30 minutes sur les discussions en sous-groupes
+5. Organisation et mobilisation
+6. Varia
+7. Fermeture

+

Nous ne pouvons pas prendre le luxe d’attendre!

+

Documents:

+

Règlements généraux du GRIP

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2015/03/17/etudes-en-action-study-in-action-conference-etudiante-et-communautaire/index.html b/2015/03/17/etudes-en-action-study-in-action-conference-etudiante-et-communautaire/index.html new file mode 100644 index 0000000..fe2dd32 --- /dev/null +++ b/2015/03/17/etudes-en-action-study-in-action-conference-etudiante-et-communautaire/index.html @@ -0,0 +1,181 @@ + + + + + + + + + +Études en Action / Study in Action : Conférence étudiante et communautaire – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Études en Action / Study in Action : Conférence étudiante et communautaire

+ +
+ +
+ +

Études en action est une conférence pour les étudiantEs de premier cycle qui vise à créer des liens entre les étudiantEs et des luttes populaires / communautaires. C’est un lieu où les étudiantEs de premier cycle peuvent présenter les résultats de leurs recherches, approfondir leurs connaissances sur des enjeux sociaux et environnementaux et tisser des liens avec des groupes communautaires. La conférence est organisée par un collectif d’étudiantEs par le biais des GRIPs à l’Université Concordia, l’Université McGill et l’UQÀM, et elle aura lieu entre le 22 et 23 mars, 2014.

+

Pour visionner l’horaire complet et les différents panels, visitez https://qpirgconcordia.org/studyinaction/fr/

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2015/03/30/marche-action-climat-inscription-pour-les-autobus/index.html b/2015/03/30/marche-action-climat-inscription-pour-les-autobus/index.html new file mode 100644 index 0000000..bdef935 --- /dev/null +++ b/2015/03/30/marche-action-climat-inscription-pour-les-autobus/index.html @@ -0,0 +1,190 @@ + + + + + + + + + +Marche Action Climat – Inscription pour les autobus – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Marche Action Climat – Inscription pour les autobus

+ +
+ +
+ +


+

Le 14 avril prochain est prévu une rencontre du Conseil de la Fédération regroupant les premiers ministres des provinces du Canada. Cette rencontre extraordinaire se déroulera à Québec et portera sur les changements climatiques.

+

Voilà pourquoi un rassemblement de grande envergure est en préparation pour le 11 avril, à 13h à Québec.

+

Du transport s’organise ! Des autobus partiront du Carré Berri (Place Émilie Gamelin) le 11 avril à 9h. L’arrivée à Québec est prévue vers 13h, juste à temps pour la manifestation. Pensez donc à amener un lunch pour pouvoir manger en chemin.

+

Après la manifestation, nous vous invitons à rester à Québec pour une la conférence « Action climat: S’unir contre les hydrocarbures »autour de 17h. Les autobus repartiront de Québec vers 19h.

+

SVP, réservez votre place dans un autobus en vous inscrivant en ligne ici.

+

OUI à la protection du climat !

+

NON à TransCanada et au pétrole issu des sables bitumineux !

+

POUR les énergies renouvelables !

+

Pour plus d’informations sur la marche, cliquez ici

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2015/04/08/tournee-de-realisme-et-dalliance-soiree-a-luqam/index.html b/2015/04/08/tournee-de-realisme-et-dalliance-soiree-a-luqam/index.html new file mode 100644 index 0000000..3ddd636 --- /dev/null +++ b/2015/04/08/tournee-de-realisme-et-dalliance-soiree-a-luqam/index.html @@ -0,0 +1,187 @@ + + + + + + + + + +Tournée « De réalisme et d’alliance » – Soirée à  l’UQAM – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Tournée « De réalisme et d’alliance » – Soirée à  l’UQAM

+ +
+ +
+ +

+

Dans le cadre d’une tournée à travers le Québec, Tâche d’huile et le GRIP vous proposent une soirée alliant courts-métrages, discussions et présentations, permet d’aborder de façon interactive plusieurs enjeux de l’heure, notamment les hydrocarbures et les politiques d’austérité.

+

L’évènement aura lieu le mercredi 22 avril, à partir de 19h, au local A-2835.

+

Lien vers l’évènement facebook

+

De Réalisme et d’alliances, car s’il faut s’ancrer dans la réalité, il semble opportun de s’allier pour y intervenir, pour le plus grand bonheur des générations montantes et futures.

+

Les attaques austères et pétrolifères appellent à la construction de solidarités profondes. Jasons-en !

+

Sur place : matériel d’information et de mobilisation outils d’organisation livres choisis (à vendre) – rencontres porteuses plus encore si vous y êtes

+

Nous espérons très fort vous compter parmi nous. Aussi, nous vous saurions gré de diffuser l’événement à vos réseaux : la diversité de participant-e-s enrichira l’expérience de tous et toutes !

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2015/04/27/projection-kanesatake-270-years-of-resistance-movie-screening/index.html b/2015/04/27/projection-kanesatake-270-years-of-resistance-movie-screening/index.html new file mode 100644 index 0000000..1461b2d --- /dev/null +++ b/2015/04/27/projection-kanesatake-270-years-of-resistance-movie-screening/index.html @@ -0,0 +1,195 @@ + + + + + + + + + +Projection – « Kanesatà :ke: 270 Years of Resistance » – Movie screening – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Projection – « Kanesatà :ke: 270 Years of Resistance » – Movie screening

+ +
+ +
+ +

*English follows*

+

Montréal, cela fait fait maintenant 25 ans qu’à eu lieu le siège de Kanesatà:ke, aussi connu sous le nom de crise d’Oka. Les causes de ce conflit – vol de terres, déni de droits – sont toujours présentes. Sommes-nous prêt-e-s à parler de ce qui s’est passé et du genre de voisin-e-s que nous voulons être pour les 25 prochaines années ?

+

Joignez-vous à nous pour une projection du documentaire « Kanesatake: 270 ans de résistance » (1993) de Alanis Obomsavin. Une discussion suivra le film.

+

UQAM, 29 avril de 18h à 21h30, au local A-2860.

+

Ceci est un événement organisé conjointement entre Climate Justice Montréal et le GRIP UQAM.

+

Voici le synopsis du film:
+« Documentaire sur la confrontation historique qui a propulsé les problèmes des Autochtones de Kanehsatake et du village d’Oka au Québec au premier plan de la scène internationale et de la conscience des Canadiens. Au cours de cet été épuisant de 1990, la productrice et réalisatrice Alanis Obomsawin, elle-même Abénaquise, a passé 78 jours et nuits angoissants derrière les barricades dressées par les Mohawks, à tourner des images du conflit armé les opposant à la Sûreté du Québec et l’Armée canadienne »

+

____

+

Dear Montreal, it has been twenty five years since the Siege on Kanehsatà:ke, also known as the Oka Crisis. All the things that created that conflict land theft, denial of rights are still happening. Are we ready to talk about what happened, and what kind of neighbours we want to be for the next 25 years?

+

Join us for a film screening of the 1993 NFB movie « Kanehsatake: 270 Years of Resistance » by director Alanis Obomsawin. A discussion will follow the film.

+

UQAM
+April 29 6pm – 9:30pm
+Room A-2860

+

This event is brought to you by Climate Justice Montreal and GRIP-UQAM.

+

Description of the film from the National Film Board (NFB):
+« On a July day in 1990, a confrontation propelled Native issues in Kanehsatake and the village of Oka, Quebec, into the international spotlight. Director Alanis Obomsawin spent 78 nerve-wracking days and nights filming the armed stand-off between the Mohawks, the Quebec police and the Canadian army. This powerful documentary takes you right into the action of an age-old Aboriginal struggle. The result is a portrait of the people behind the barricades. »

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2015/05/21/assemblee-generale-mardi-9-juin/index.html b/2015/05/21/assemblee-generale-mardi-9-juin/index.html new file mode 100644 index 0000000..2e6adb9 --- /dev/null +++ b/2015/05/21/assemblee-generale-mardi-9-juin/index.html @@ -0,0 +1,194 @@ + + + + + + + + + +Assemblée générale – Mardi 9 juin – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Assemblée générale – Mardi 9 juin

+ +
+ +
+ +

Le GRIP a le plaisir de vous inviter à son assemblée générale de budget. Celle-ci aura lieu le mardi 9 juin, à partir de 17h au local A-1785 (Pavillon Aquin, UQAM).

+

Cette assemblée permettra aux différents comités membres du GRIP de présenter leur plan d’action et leur budget pour l’année à venir. Comme toujours, votre présence est essentielle !
+Voici l’ordre du jour proposé:
+1. Ouverture
+2. Procédures
+2.1 Élection de l’animation et du secrétariat
+2.2 Adoption de l’ordre du jour
+2.3 Adoption du procès-verbal du 18 février 2015
+3. Plan d’action 2015-16
+4. Budget 2015-16
+5. Mobilisation contre les hydrocarbures
+6. Varia
+7. Fermeture
+Vous pouvez trouver tous les documents nécessaires à l’AG (règlements, PV de l’AG précédente, etc.) en cliquant ici. Ces documents seront mis à jour au fur et à mesure.
+Évènement Facebook

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2015/08/03/offre-demploi-coordination-aux-activites/index.html b/2015/08/03/offre-demploi-coordination-aux-activites/index.html new file mode 100644 index 0000000..22f134c --- /dev/null +++ b/2015/08/03/offre-demploi-coordination-aux-activites/index.html @@ -0,0 +1,184 @@ + + + + + + + + + +Offre d’emploi – Coordination aux activités – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Offre d’emploi – Coordination aux activités

+ +
+ +
+ +

Offre d’emploi: Coordination aux activités du GRIP-UQAM

+

Le GRIP est à la cherche d’une personne pour combler le poste de Coordination aux activités. Il s’agit d’un emploi à temps partiel réservé aux étudiant-e-s de l’UQAM.

+

Toute les informations concernant le poste sont disponibles ici.

+

Pour postuler, envoyez CV et lettre de présentation à grip@uqam.ca, avec comme objet « Candidature – coordination » avant le dimanche 16 août à 17h.

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2015/08/10/assemblee-generale-du-grip-3/index.html b/2015/08/10/assemblee-generale-du-grip-3/index.html new file mode 100644 index 0000000..4089727 --- /dev/null +++ b/2015/08/10/assemblee-generale-du-grip-3/index.html @@ -0,0 +1,194 @@ + + + + + + + + + +Assemblée générale du GRIP – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Assemblée générale du GRIP

+ +
+ +
+ +

+

Le GRIP a le plaisir de vous inviter à son assemblée générale de budget. Celle-ci aura lieu le mardi 25 août, à partir de 17h au local A-1785 (Pavillon Aquin, UQAM, Métro Berri-UQAM).

+

Cette assemblée permettra aux différents comités membres du GRIP de présenter leur plan d’action et leur budget pour l’année à venir. Comme toujours, votre présence est essentielle !

+

Voici l’ordre du jour proposé:
+1. Ouverture
+2. Procédures
+2.1 Élection de l’animation et du secrétariat
+2.2 Adoption de l’ordre du jour
+2.3 Adoption du procès-verbal du 18 février 2015
+3. Plan d’action 2015-16
+4. Budget 2015-16
+5. Mobilisation contre les hydrocarbures
+6. Varia
+7. Fermeture

+

Vous pouvez trouver tous les documents nécessaires à l’AG (règlements, PV de l’AG précédente, etc.) en cliquant ici. Ces documents seront mis à jour au fur et à mesure.

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2015/09/28/marche-fermier-ateliers-radio-et-video/index.html b/2015/09/28/marche-fermier-ateliers-radio-et-video/index.html new file mode 100644 index 0000000..0958851 --- /dev/null +++ b/2015/09/28/marche-fermier-ateliers-radio-et-video/index.html @@ -0,0 +1,191 @@ + + + + + + + + + +Marché fermier : ateliers, radio et video ! – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Marché fermier : ateliers, radio et video !

+ +
+ +
+ +

+

Le lien pour écouter la Radio fermière en direct les mercredi de midi à  18h

+

Pour en savoir plus : Radio fermière

+

* * *

+

De nouveaux vidéo des fermes qui sont au Marché fermier.

+

Débutons par les Jardins du Petit-Tremble

+

 

+

* * *

+

Prochaine journée d’aide à  la ferme :

+

Vendanges bio au Vignoble des Négondos (Mirabel)

+

Le comité Aliments d’ici du GRIP

+

 

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2015/10/06/offre-demploi-de-medis-libres/index.html b/2015/10/06/offre-demploi-de-medis-libres/index.html new file mode 100644 index 0000000..20abd73 --- /dev/null +++ b/2015/10/06/offre-demploi-de-medis-libres/index.html @@ -0,0 +1,199 @@ + + + + + + + + + +Offre d’emploi de Médi@s Libres! – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Offre d’emploi de Médi@s Libres!

+ +
+ +
+ +

Médi@s Libres cherche à embaucher 2 personnes pour sa permanence, l’organisation d’un festival et travailler sur un réseau de médias alternatifs

+

tout cela dans le but de contribuer au réseautage du milieu militant et de distribuer du matériel audiovisuel socialement engagé !

+

Dans la création de ces deux postes créés grâce aux fonds de la Cotisation automatique non obligatoire (CANO), nous prioriserons l’embauche d’étudiantEs de l’UQAM et suivront la politique d’embauche du GRIP. En plus d’assurer leurs tâches respectives, ces personnes devront assister aux réunions du comité de suivi du collectif et représenter celui-ci dans les instances du GRIP de façon bénévole.

+

PermanentE (4 h / sem 42 semaines):

+

Le/la permanentE aura pour tâche d’assurer la cohésion du groupe en gérant la boîte de courriel de Médi@s Libres ainsi que les différents dossiers liés à l’organisme. Il/elle devra superviser la quatrième édition du Festival Hors-Cadre qui aura lieu au printemps 2016. La personne travaillera de pair avec l’agentE de réseautage, autre employéE du collectif.

+

Pour les détails

+

AgentE de réseautage ( 4h / sem 42 semaines) :

+

L’agentE de réseau est chargée du réseautage entre médias alternatifs et du suivi du projet de portail agrégateur liant ces différents médias. Il/elle devra assurer le lancement de cette plateforme au courant de l’année.

+

Pour les détails

+

Pour déposer votre candidature, faites-nous parvenir votre CV ainsi qu’une lettre de motivation à l’adresse suivante:

+

mediaslibres.uqam@gmail.com

+

SeulEs les candidatEs retenuEs seront contactéEs.

+

Visitez notre nouveau site web:

+

https://mediaslibresmontreal.wordpress.com/a-propos/

+

Qu’est-ce que Médi@s Libres ?

+

C’est un collectif de média alternatif. Nous sommes composéEs d’individuEs, de groupes et d’associations qui ont pour but d’apporter un autre regard médiatique que celui des médias de masses et d’amener des débats de fond sur notre société dans l’espace public.

+

Les missions du collectif sont de :

+

Promouvoir un discours médiatique indépendant par la production, la diffusion et la distribution d’oeuvres audiovisuelles
+Développer un réseau de communication entre les différents territoires du «Québec», du «Canada» et du monde, en utilisant les outils audiovisuels

+

Médi@s Libres a la mission particulière de faciliter la diffusion et la distribution de matériel audiovisuel prônant les valeurs d’écologie, de justice sociale, de coopération et de partage, d’éducation populaire et de démocratie participative, à l’ensemble des étudiantEs de l’UQAM et des membres des communautés, directement ou indirectement. Par le biais d’événement spéciaux et d’outils de partage des connaissances et du matériel, le collectif vise à réseauter différents collectifs et à faciliter leur autonomie au niveau de la production audiovisuelle.

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2015/10/27/party-dhalloween-pour-ristigouche/index.html b/2015/10/27/party-dhalloween-pour-ristigouche/index.html new file mode 100644 index 0000000..2f6d2e7 --- /dev/null +++ b/2015/10/27/party-dhalloween-pour-ristigouche/index.html @@ -0,0 +1,189 @@ + + + + + + + + + +Party d’Halloween pour Ristigouche! – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Party d’Halloween pour Ristigouche!

+ +
+ +
+ +

Party d’halloween pour Ristigouche: L’horreur du pétrole!

+

Venez au party d’Halloween en solidarité avec le village gaspésien de Ristigouche (poursuivi par Gastem)! Ce village gaspésien de 168 habitant-e-s se fait poursuivre par Gastem pour 1,5 million de dollars parce qu’il a osé règlementer afin de protéger son eau potable. Les bénéfices de la soirée aideront Ristigouche à payer les frais pour se défendre.
+Écoutez, chantez, dansez avec JiCi Lauzon, Bon Débarras, la Chorale du peuple, Sanza Percussions / Sadio Sissokho, Dan Parker et la musique du DJ DIABitumineux.
+Concours pour le meilleur costume sur le thème: L’HORREUR DU PÉTROLE !
+Contribution volontaire suggérée: 10$

+

cliquez ici pour faire un don

+

La soirée a lieu Vendredi le 30 octobre au Atomic Café, 3606 rue Ontario Est, Montréal.

+

Pour avoir plus de détails, vous pouvez consulter l‘événement Facebook

+

Si vous voulez plus d’informations sur Ristigouche, consultez leur site web

+

 

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2015/11/03/17-novembre-territoires-en-batailles-resistances-autochtones-contre-les-pipelines-et-lindustrie-extractive/index.html b/2015/11/03/17-novembre-territoires-en-batailles-resistances-autochtones-contre-les-pipelines-et-lindustrie-extractive/index.html new file mode 100644 index 0000000..ef187a2 --- /dev/null +++ b/2015/11/03/17-novembre-territoires-en-batailles-resistances-autochtones-contre-les-pipelines-et-lindustrie-extractive/index.html @@ -0,0 +1,182 @@ + + + + + + + + + +17 Novembre!! Territoires en Bataille: résistances autochtones contre les pipelines et l’industrie extractive – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

17 Novembre!! Territoires en Bataille: résistances autochtones contre les pipelines et l’industrie extractive

+ +
+ +
+ +

UQAM La Chaufferie (CO-R700) au pavillon Coeur des sciences 175, avenue du Président-Kennedy

+

Joignez-vous à  nous le 17 novembre pour une soirée de célébration des luttes autochtones pour la défense du territoire avec Freda Huson, porte-parole du camp d’action Unist’ot’en et Toghestiy, chef héréditaire du Clan Likhts’amisyu des Wet’suwet’en, Shannon Chief de la Nation Algonquine du Bassin-Versant de la Rivière des Outaouais (NABRO), Felipe Uncacia, délégué des autorités traditionnelles du peuple U’wa (Colombie), Natasha Kanapé Fontaine, poète et militante Innu et André Pikutelekan, Innu traditionaliste de Pessamit et Marie-Hélène Parant et les vidéos documentaires de subMedia.tv.

+

plus d’info : https://www.facebook.com/events/828942673892978/

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2015/11/04/lancement-du-livre-le-12-novembre-ecology-or-catastrophe-the-life-of-murray-bookchin/index.html b/2015/11/04/lancement-du-livre-le-12-novembre-ecology-or-catastrophe-the-life-of-murray-bookchin/index.html new file mode 100644 index 0000000..905dc2b --- /dev/null +++ b/2015/11/04/lancement-du-livre-le-12-novembre-ecology-or-catastrophe-the-life-of-murray-bookchin/index.html @@ -0,0 +1,217 @@ + + + + + + + + + +Lancement du livre le 12 novembre Ecology or Catastrophe: the life of Murray Bookchin – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Lancement du livre le 12 novembre Ecology or Catastrophe: the life of Murray Bookchin

+ +
+ +
+ +

Lancement du livre de Janet Biehl sur la vie de Murray Bookchin!

+

Le 12 novembre à 17h à l’UQAM, Pavillon Paul-Gérin-Lajoie, salle N-M510, 1205 rue St-Denis (lien Facebook)

+

Mardi le 10 novembre à McGill (English) https://tinyurl.com/pug7c4r

+

– (Mercredi) Soirée 5 à 7 au Centre d’écologie urbaine de Montréal. (Bilingue) // (Wednesday) 5 à 7 Social at the Urban Ecology Center. (Bilingual) https://tinyurl.com/q6zvpc3

+

Activiste, orateur, philosophe et historien, Murray Bookchin n’était pas seulement l’un des penseurs politique et environnemental du 20e siècle; il était aussi un des plus grands visionnaires. Impliqué dès sa jeunesse comme un militant radical des mouvements ouvrier, anti-guerre et pour les droits civils, il était aussi un écologiste en avance sur son temps, parlant des pesticides, de l’agriculture industrielle et du réchauffement climatique dès les années 1950-1960. Il est aussi connu pour ses écrits sur l’évolution, la technologie, les villes, l’anarchisme, le marxisme et l’histoire révolutionnaire.

+

En fondant le mouvement d’écologie social, il insistait sur le fait que les problématiques sociales et écologistes sont inter-reliées, envisageant une société libre basée sur la décentralisation, des assemblées populaires de citoyen-ne-s et d’une économie à l’échelle humaine, en harmonie avec la nature. Ces valeurs visionnaires ont inspiré des luttes communautaires aussi près que le quartier de Montréal du parc Milton et de Pointe-St-Charles et aussi loin que les Kurdes de Syrie ou à la révolution Rojava a été témoin de démocratie directe, d’une économie coopérative et le féminisme prospérer au coeur d’un Moyen-Orient troublé.

+

Autant que la biographie d’un grand penseur et la continuation de l’appel aux armes écologique et social de Bookchin, Ecology or Catastrophe est un texte incontournable pour les environnementalistes, les activistes politique et n’importe qui se questionnant sur les problématiques écologiques. Cette première biographie de Bookchin est imprimé par Oxford University Press. Les lancements de livres sont organisés en collaboration par Black Rose Books, GRIP-UQAM et les Éditions Écosociété.

+

Si vous voulez plus d’informations, contactez Nathan McDonnell : nathan@blackrosebooks.com ou 514-844-4076.

+

Janet Biehl était l’éditrice de Bookchin et sa collaboratrice à travers la majorité de sa vie professionnelle et continue l’héritage en collaboration active avec le mouvement de liberté Kurde. Elle vit à Burlington, Vermont aux États-Unis.

+

——————————–
+Commentaires sur la biographie :

+

« Créatif, charismatique, controversé et, plusieurs ajouteraient, plus souvent qu’autre chose irascible, Murray Bookchin était, sans aucun doute un des penseurs anticapitalistes les plus importants du dernier siècle. Dans la biographie intime et méticuleuse de Janet Biehl, nous voyons la vie tumultueuse montré de manière à mettre en lumière les contre-courants et confusions qui ont amené la monté du mouvement écologique de gauche durant plus d’une moitié de siècle. Cette biographie mérite d’être lue pour sa pertinence contemporaine.» David Harvey

+

Commentaires sur Murray Bookchin :

+

«[Bookchin a apporté] la plus important contribution aux réflexions écologique de notre génération.»

+

Theodore Roszak

+

«Bookchin est un des leaders écologique de nos temps. Son travail se classe aux côtés du travail monumental de Lewis Mumford sur la culture et l’histoire des cités et va plus loin.»

+

Prof. Kenet Gerecke

+

Lien vers les autres événements:
+https://www.facebook.com/events/560696677417168/

+

***** English version*****

+

This event is taking place as part of a three day series with the visiting author, Janet Biehl. The two other events include:
+– (Tuesday) McGill Book Launch. (English) https://tinyurl.com/pug7c4r
+– (Mercredi) Soirée 5 à 7 au Centre d’écologie urbaine de Montréal. (Bilingue) // (Wednesday) 5 à 7 Social at the Urban Ecology Center. (Bilingual) https://tinyurl.com/q6zvpc3

+

————

+

Ecology or Catastrophe: The Life of Murray Bookchin

+

Activist, orator, philosopher, historian: Murray Bookchin was not only one of the most significant political and environmental thinkers of the Twentieth Century he was also one of the most prescient. Involved since his youth as a radical in labour, anti-war and civil rights struggles, he was also an ecologist ahead of his time, warning of pesticides, industrial agriculture and global warming since the 1950s and 1960s. He is also well known for his writings on evolution, technology, cities, anarchism, Marxism and revolutionary history.

+

In founding the social ecology movement, he insisted that social and ecological issues were intertwined, envisioning a free society based on decentralisation, grassroots citizen’s assemblies and human-scale economies in harmony with nature. Such visionary values have inspired community struggles as near as the Montreal neighbourhoods of Milton-Park and Point St. Charles and as far as Syrian Kurdistan, where the Rojava Revolution witnesses direct democracy, co-operative economics and feminism thrive in the midst of a troubled Middle East.

+

Both the biography of a great thinker and a continuation of Bookchin’s ecological and social call to arms, ‘Ecology or Catastrophe’ is an indispensable text for environmentalists, political activists and anyone looking for answers to today’s ecological concerns. This first biography of Bookchin is brought to print by Oxford University Press. These book launches are co-organised by Black Rose Books, GRIP-UQAM and Éditions Écosociété. Please contact Nathan McDonnell for more information: nathan@blackrosebooks.com or 514-844-4076.

+

Janet Biehl was Bookchin’s copyeditor and collaborator throughout most of his professional life and continues his legacy by active collaboration with the Kurdish freedom movement. She lives in Burlington, Vermont, the United States.

+

——————————–

+

PRAISE FOR THE BIOGRAPHY:
+Creative, charismatic, controversial and, many would add, more often than not a bit cantankerous, Murray Bookchin was without doubt one of the most significant anti-capitalist thinkers of the last century. Here in Janet Biehl’s intimate and meticulously researched biography, we see his tumultuous life and times laid out in such a way as to illuminate the cross-currents and confusions that powered the rise of left-wing ecological movements over more than half a century. This biography deserves to be widely read for its contemporary relevance.
+David Harvey

+

PRAISE FOR MURRAY BOOKCHIN:
+[Bookchin offered] the most important contribution to ecological thought in our generation.
+Theodore Roszak

+

Bookchin is the leading ecological thinker of our times. His work ranks alongside Lewis Mumford’s monumental works on the culture and history of cities and goes beyond.
+Prof. Kenet Gerecke

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2015/11/13/appel-de-projets-vers-une-societe-ecologique/index.html b/2015/11/13/appel-de-projets-vers-une-societe-ecologique/index.html new file mode 100644 index 0000000..50ba9c2 --- /dev/null +++ b/2015/11/13/appel-de-projets-vers-une-societe-ecologique/index.html @@ -0,0 +1,235 @@ + + + + + + + + + +Appel de projets : recherches et créations étudiantes… Vers une société écologique – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Appel de projets : recherches et créations étudiantes… Vers une société écologique

+ +
+ +
+ +

+

Aux étudiant.e.s de toutes les facultés et cycles d’étude

+

pour des présentations dans divers lieux de l’UQAM de vos recherches et créations

+

qui questionnent, interpellent, proposent, des pistes de réflexion ou d’action…

+

vers une société écologique !

+

dans le cadre de la Semaine de l’environnement et du Défi énergie à  l’UQAM en janvier 2016

+

PROLONGATION ! date limite pour les propositions : 11 décembre 2015

+

des ressources et divers prix seront alloués aux projets inspirants

+

Présentation

+

Cet appel vise à  mettre en commun nos réflexions, recherches et créations étudiantes qui questionnent, interpellent et proposent des pistes de réflexion ou d’action en vue d’une société écologique.

+

Dans toutes les facultés de l’UQAM, nous sommes quelques un.e.s à  prendre un temps fou à  lire, écrire, créer, dans l’espoir que ça puisse nourrir l’engagement, l’innovation, la pratique, les choix de société, en réponse aux enjeux écologiques de notre époque.

+

Dans le contexte de la Semaine de l’environnement à  l’UQAM, plusieurs moments permettront de présenter vos recherches et créations, à  l’occasion de rencontres midi et en début de soirée dans des cafés étudiants et autres espaces dans l’UQAM (ex: si une scène, un espace d’exposition ou autre s’y prêtent mieux dans votre domaine).

+

L’invitation vous est lancée par le Groupe de recherche d’intérêt public (GRIP-UQAM), groupe écologiste étudiant uqamien qui vise, par la recherche, la sensibilisation et l’action, à  favoriser l’engagement envers le projet d’une société écologique et conviviale. Nous réunissons une dizaine de comités qui y travaillent chacun à  leur façon (agriculture urbaine, média indépendant, protection du territoire, etc.)

+

Or, beaucoup se réalise à  l’UQAM, de façon décentralisée, dans les laboratoires, départements, ateliers, sur des coins de table et personne ne sait trop qui réfléchit à  quoi sur ces questions environnementales à  l’UQAM… mais on sait tout.e.s qu’on est nombreux.euses à  avoir ces enjeux à  coeur. Sortons donc de nos recoins ! Créons un espace de rencontre.

+

Quand ?

+

Du 11 au 22 janvier 2016, durant deux semaines, l’engagement académique, institutionnel et personnel des membres de la communauté uqamienne en faveur de l’environnement seront mis de l’avant. D’abord, le Défi Énergie nous invitera entre autres à  réfléchir et agir sur les enjeux énergétiques écologiques. La Semaine de l’Éco-responsabilité, par la suite, mobilisera l’UQAM autour de ce qui s’y fait (et ce qui pourrait être fait) pour l’environnement. Ces moments de convergence, de reconnaissance et d’engagement sont aussi l’occasion de mettre en commun nos recherches et nos projets.

+

Sous quelles formes ?

+
    +
  • +

    Des présentations dans les cafés étudiants de l’UQAM, en après-midi et en début de soirée

    +
  • +
  • +

    Une soirée artistique

    +
  • +
  • +

    Une ou plusieurs expositions

    +
  • +
+

A l’issue de ces semaines, le GRIP souhaite réaliser une revue réunissant des textes et images qui auront émergé de l’appel de projets.

+

Comment créer son projet ?

+

1) Inscription :

+

Remplir la fiche d’inscription suivante, d’ici le 11 décembre 2015 : https://docs.google.com/forms/d/1hvm6qlxGt-C_lHNfOQ4Rf-J7K-FrR-7kL8-NBc6U9b8/viewform

+

Chaque étudiant.e qui dépose une proposition sera contacté.e par le comité organisateur pour voir aux possibilités de présentation de son projet.

+

2)  Sélection :

+

Il n’y a pas tant de limite en terme de nombre ou de sélection des « meilleurs projets » mais plutôt un code d’éthique qui s’applique au niveau de l’acceptation des propositions. Vous le trouverez ci-dessous. Il consiste essentiellement en un ensemble de valeurs que nous souhaitons mettre de l’avant ainsi qu’un rappel de dynamiques oppressives à  éviter.

+

La question de la faisabilité technique peut aussi être un facteur de sélection, advenant des projets qui auraient des besoins au niveau d’espace ou de ressources dépassant nos contraintes logistiques et monétaires. Nous avons quelques ressources pour aider au niveau du matériel et l’UQAM offre une diversité d’espaces pouvant être habités au cours de ces semaines en janvier prochain. Nous ferons tout en notre possible pour que vos projets puissent s’y réaliser. Toutefois, Nous nous se gardons une réserve si cela dépasse nos capacités, tout en vous invitant à  réfléchir avec nous aux possibilités pour mettre de l’avant vos propositions.

+

3) Mise en oeuvre :

+

Les projets retenus le seront d’ici la mi-décembre.

+

Des rencontres réunissant les étudiant.e.s dont les présentations ont été retenues auront lieu par la suite. Il sera question de :

+

   Soutien à  l’inter-disciplinarité et au dialogue :

+

Dans chacune de facultés et disciplines, on a nos langages, nos approches et c’est rare qu’on entre en dialogue avec des étudiant.e.s d’autres facultés autour des thèmes sur lesquels on travaille. Cela demande un certain effort d’adaptation. Passer de l’écrit théorique à  une présentation orale encourageant la discussion est un autre défi qu’on a rarement l’occasion de réaliser durant nos études. Pourtant, si nos recherches et projets sont d’intérêt public, on doit pouvoir s’en parler au-delà  du cadre formel des cours.

+

Un soutien sera offert en ce sens, basé sur les ateliers « Études en action » que les GRIP organisent chaque année.

+

   Soutien technique :

+

Un devis technique pourra être complété pour chaque proposition qui implique un espace différent du format « présentation dans les cafés étudiants ». Musique, théâtre, design, danse… l’environnement n’est pas qu’une discipline scientifique, c’est notre lien viscéral envers ce qui nous garde en vie qui est en jeu. Les modes pour l’exprimer et pour inspirer des prises de conscience et des changements dans nos pratiques peuvent impliquer formes aussi diverses que vous le proposerez. Des ponts entre les approches scientifiques et les manifestations plus visuelles, expressives et interactives sont d’autant plus les bienvenus

+

(ex : voir en ligne les video « Dance your PHD » et imaginer à  partir de là  la diversité des formes possibles ;). Dans de tels cas, une collaboration avec des étudiant.e.s des autres disciplines concernées par vos présentations pourront être faits, dans la mesure du possible.

+

   Diffusion post-événement :

+

Ces deux semaines entre le 11 et le 22 janvier 2016 seront l’occasion de mettre en commun nos questions, nos recherches, nos créations. Au-delà  des ces présentations, des outils seront prévus pour que dans la durée, on puisse s’y référer : vidéo, photo, journal, selon ce que chaque étudiant.e impliqué.e acceptera qui soit donné comme suite, et ce que le comité organisateur verra possible de mettre de l’avant.

+

Ce comité organisateur est d’ailleurs ouvert : pour s’y impliquer, écrire à  : grip@uqam.ca

+

Voilà , on oublie peut-être certains points, écrivez-nous à  cette même adresse si vous voulez des précisions !

+

Des étudiant.e.s de l’UQAM impliqué.e.s dans ce projet

+

 

+

Code d’éthique

+

Chaque groupe ou individu qui proposera un projet sera invité à  en faire la présentation au comité organisateur, soit en personne ou en communiquant un document écrit ou visuel, selon la forme qui se prête mieux au projet.

+

Le code d’éthique vise à  ce que, tout en amenant des réflexions sur les questions écologistes, sociales, les projets voient à  ne pas négliger ou reproduire les rapports de domination liés aux genres, au langage, aux classes, aux cultures et ce, en adoptant une attitude communautaire et inclusive, d’ouverture, de respect et de communication non-violente.

+

Également, une vigilance sera de mise envers tout propos qui ridiculise, marginalise, rejette, menace ou blesse quiconque sur la base de son âge, son apparence physique, son bagage culturel, ses capacités, son éducation, son ethnie, son expression personnelle, son genre, son statut d’immigrant.e, sa langue, sa nationalité, sa religion, son orientation sexuelle, son statut parental ou tout autre facteur.

+

Les projets peuvent donc adopter une diversité de points de vue, amener des questionnements, des analyses ou des pistes de solution, dans le respect des principes mentionnés. Une attitude d’ouverture à  la discussion de la part des étudiant.e.s qui présenteront ainsi que de dialogue constructif suite aux présentations seront encouragés.

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2015/11/19/soiree-festive-dappui-aux-activistes-de-val-jalbert/index.html b/2015/11/19/soiree-festive-dappui-aux-activistes-de-val-jalbert/index.html new file mode 100644 index 0000000..ed5c432 --- /dev/null +++ b/2015/11/19/soiree-festive-dappui-aux-activistes-de-val-jalbert/index.html @@ -0,0 +1,190 @@ + + + + + + + + + +Soirée festive d’appui aux activistes de Val-Jalbert ! – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Soirée festive d’appui aux activistes de Val-Jalbert !

+ +
+ +
+ +

Soirée festive le vendredi 27 novembre dès 18h30 au café Sain Fractal !!

+

Rejoignez-nous pour une soirée festive avec musique, danse, vidéos et murale sur les enjeux énergétiques et la protection des rivières. L’objectif est de supporter les activistes de Val-Jalbert qui font face à  une judiciarisation liée à  leur action.

+

Le 8 avril 2013 5 militant-e-s se sont barricadé-e-s à  l’intérieur de deux cabines du téléphérique passant au dessus de la rivière Ouiatchouan à  Val-Jalbert. L’objectif était de protester contre la construction de la centrale hydro-électrique. Pour plus d’informations, vous pouvez consulter l’article de l’époque qui expliquait la situation: https://ici.radio-canada.ca/regions/saguenay-lac/2013/04/08/002-val-jalbert-ouiatchouan-centrale.shtml

+

Le verdict est tombé en avril 2015: ils et elle doivent payer 5000$ d’amende ainsi que faire 120h de travaux communautaires. Pour plus d’informations, vous pouvez consulter cet article: https://ici.radio-canada.ca/regions/saguenay-lac/2015/04/27/004-val-jalbert-telepherique-peine.shtml?isAutoPlay=1

+

Il y aura des projections de vidéos, des présentations, le dévoilement d’une murale qui avait été faite précédemment pour la sauvegarde de la chute et bien d’autres choses. Nous vendrons aussi des bouchées, pâtisseries et des rafraîchissements.

+

L’adresse est le 200 Rue Sherbrooke, local SH-R380, passez par l’arrière du bâtiment :)

+

Une contribution volontaire de 10$ est suggérée!
+Venez célébrer en grand nombre et invitez vos ami-e-s!!

+

Voici l’événement Facebook pour celles et ceux qui ont Facebook!

+

Pour plus d’informations sur l’action et les raisons qui ont poussées les activistes à  protester contre la centrale: https://www.sosvaljalbert.com/

+

Pour celles et ceux qui ne pourraient se présenter, mais qui aimeraient tout de même aider les activistes de Val-Jalbert, vous pouvez faire un don à  l’aide du lien de socio-financement suivant: https://haricot.ca/project/val-jalbert

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2015/12/07/souper-dumpster-diving-vs-cop21/index.html b/2015/12/07/souper-dumpster-diving-vs-cop21/index.html new file mode 100644 index 0000000..288f200 --- /dev/null +++ b/2015/12/07/souper-dumpster-diving-vs-cop21/index.html @@ -0,0 +1,199 @@ + + + + + + + + + +Souper dumpster diving VS COP21 – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Souper dumpster diving VS COP21

+ +
+ +
+ +

+

 

+

***English version will follow***

+

À l’occasion de la fin de la mascarade politique, sociale et écologique de la COP21 à  Paris, le Collectif de luttes écologistes étudiantes (CLÉÉ), le GRIP-UQAM et SOS Territoire vous invite à  venir soutenir les luttes écologistes locales et autochtones lors d’un:

+

Souper Dumpster Diving,

+
Jeudi le 10 décembre
+
entre 17h et 19h
+
au Café Coop La Place Commune (7669 avenue Querbes, Métro Parc)
+

 

+

Entrées libre, contributions volontaires

+

 

+

__________________

+

While the political, social and ecological mascarade of the COP21 will be ending in Paris, le Collectif de lutte écologiste étudiant of Université de Montréal (CLEE), GRIP-UQAM and SOS-Territoire invite you to support the local environmental struggles and the First Nations’ ones in a :

+

Dumpster-Diving Dinner

+
Thursday December 10th
+
Between 5-7 pm
+
Café Coop La Place Commune (7669 av. Querbes, métro Parc)
+
+
Free entrance, donations welcome
+

 

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2015/12/17/defi-survivre-une-semaine-sans-emballage/index.html b/2015/12/17/defi-survivre-une-semaine-sans-emballage/index.html new file mode 100644 index 0000000..595952d --- /dev/null +++ b/2015/12/17/defi-survivre-une-semaine-sans-emballage/index.html @@ -0,0 +1,189 @@ + + + + + + + + + +Défi Survivre une semaine sans emballage – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Défi Survivre une semaine sans emballage

+ +
+ +
+ +

+

Du 13 au 20 janvier … Relevons le défi de réduire au minimum nos déchets…

+

Plus d’info, l’historique du défi, s’inscrire et des ressources pour vivre sans emballage au lien suivant

+


+Activités prévues durant le Défi
:

+
    +
  • Soirée de lancement, mercredi le 13 janvier
  • +
  • Dîner sans emballage, lundi le 18 janv.
  • +
  • Fête de clôture, mercredi le 20 janv.
  • +
+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2016/01/10/eco-vox-a-loccasion-de-la-semaine-de-leco-responsabilite/index.html b/2016/01/10/eco-vox-a-loccasion-de-la-semaine-de-leco-responsabilite/index.html new file mode 100644 index 0000000..9f96a65 --- /dev/null +++ b/2016/01/10/eco-vox-a-loccasion-de-la-semaine-de-leco-responsabilite/index.html @@ -0,0 +1,186 @@ + + + + + + + + + +Éco-Vox dans les cafés étudiants : à  l’occasion de la Semaine de l’Éco-responsabilité – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Éco-Vox dans les cafés étudiants : à  l’occasion de la Semaine de l’Éco-responsabilité

+ +
+ +
+ +

+

Du 12 au 21 janvier 2016, les cafés étudiants seront animés de discussions et d’expositions, sur la place actuelle et possible des enjeux environnementaux dans nos cours, recherches et projets étudiants…

+

Horaire détaillé: par faculté

+

Ce sont les suites à l’appel de projets « Vers une société écologique » lancé par le Groupe de recherche d’intérêt public cet automne. L’info précise sur cet appel se trouve ci-dessous.

+

Ceci s’inscrit dans une démarche menée conjointement avec des professeur.e.s, chargé.e.s de cours et autres membres de la communauté uqamienne qui ont ces questions à coeur, à l’occasion de la Semaine de l’Éco-responsabilité.

+

Plusieurs façons de participer

+

Diffuser l’invitation via Facebook

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2016/02/09/oleoduc-ligne-9-denbridge-et-autres-projets-partageons-nos-luttes/index.html b/2016/02/09/oleoduc-ligne-9-denbridge-et-autres-projets-partageons-nos-luttes/index.html new file mode 100644 index 0000000..e818726 --- /dev/null +++ b/2016/02/09/oleoduc-ligne-9-denbridge-et-autres-projets-partageons-nos-luttes/index.html @@ -0,0 +1,187 @@ + + + + + + + + + +Oléoduc ligne 9 d’Enbridge et autres projets… Partageons nos luttes ! – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Oléoduc ligne 9 d’Enbridge et autres projets… Partageons nos luttes !

+ +
+ +
+ +

Le comité SOS Territoire, GRIP-UQAM et Justice Climatique Montréal vous invitent..

+
12 fév 18h.: Partageons nos luttes contre l’oléoduc ligne 9 d’Enbridge : Panel avec Vanessa Gray, Rachel Thevenard, Patricia Domingos et Jean Léger, suivi d’une Fête :https://www.facebook.com/events/480945758696631/
+

13 fév 13h : Assemblée de mobilisation face aux projets d’hydrocarbures. Ce dernier événement abordera d’autres projets en plus de la ligne 9. Voir les thèmes prévus au lien suivant: https://www.facebook.com/events/1533812936917742/

+
+
+
Le tout se déroule au Complexe des sciences de l’UQAM, métro Place-des-Arts,
+
le vendredi à  la Salle de la Chaufferie (Coeur des sciences) et le samedi au PK-R560 :
+
voir aux liens ci-dessus pour les adresses et chemins précis.  Bienvenue !
+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2016/03/14/assemblee-generale-du-grip-le-31-mars-a-17h/index.html b/2016/03/14/assemblee-generale-du-grip-le-31-mars-a-17h/index.html new file mode 100644 index 0000000..ae17763 --- /dev/null +++ b/2016/03/14/assemblee-generale-du-grip-le-31-mars-a-17h/index.html @@ -0,0 +1,203 @@ + + + + + + + + + +Assemblée générale du GRIP le 31 mars à  17h!! – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + Bannière d’Assemblée générale. Il est écrit à droite “Bilan, élections et reconnaissance des comités du GRIP”. L’arrière-plan est orange avec des dessins roses de fleurs, les écritures sont bleues royal. +
+ +

Assemblée générale du GRIP le 31 mars à  17h!!

+ +
+ +
+ +

Le GRIP-UQÀM vous invite à son AG de bilan, reconnaissance de comité et d’élections jeudi le 31 mars à 17h au R-M120! Ce sera l’occasion d’apprendre à connaître les comités, de savoir ce qu’ils ont fait dans la dernière année, mais aussi de proposer le comité dont vous avez toujours rêvé! Nous aborderons quelques nouvelles politiques qui ont été développée par le comité de coordination et discutées en plénière inter-comités.
+L’odre du jour sera le suivant:

+

0. Ouverture
+1. Procédures
+2. Avis de motion
+3. Rapport d’activités
+4. États financiers
+4.1 Adoption des états financiers
+4.2 Nomination du ou de la vérificateur-trice
+5. Élections
+5.1 Comité exécutif
+5.2 Conseil d’administration
+5.3 Comité d’attribution des subventions
+6. Reconnaissance des comités
+7. Politiques
+7.1 Politique de médiation
+7.2 Politique d’inclusion
+7.3 Politique d’embauche
+7.4 Contrat de travail
+8. Varia
+9. Fermeture

+

Voici un lien vers les documents pertinents pour l’AG :https://drive.google.com/folderview?id=0B01R1dIpRy26ZElKcVFXcU4zMDg&usp=sharing
+Clique ici si vous voulez voir (ou diffuser ;) ) l’événement Facebook

+

si vous avez des questions, n’hésitez pas à nous contacter au 514-987-3000 #4077 ou à l’adresse courriel grip@uqam.ca

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2016/04/18/le-marche-fermier-cherche-un-e-charge-e-de-projet/index.html b/2016/04/18/le-marche-fermier-cherche-un-e-charge-e-de-projet/index.html new file mode 100644 index 0000000..3a87695 --- /dev/null +++ b/2016/04/18/le-marche-fermier-cherche-un-e-charge-e-de-projet/index.html @@ -0,0 +1,189 @@ + + + + + + + + + +Le marché fermier cherche un-e chargé-e de projet! – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + Photo de côté paysage montrant un kiosque du marché fermier devant l’UQAM. Une personne est devant le stand en le regardant et une personne derrière le stand s’apprête à lui donner un panier de bleuets. Les autres fruits et légumes incluent notamment des cerises de terre, des laitues, des carottes. +
+ +

Le marché fermier cherche un-e chargé-e de projet!

+ +
+ +
+ +

Chargé-e de projet : Marché fermier de l’UQAM

+
pour le comité Aliments d’ici du GRIP (22h/ semaine)
+
Candidatures acceptées d’ici le 29 avril à  minuit
+
Entrée en poste : 9 mai 2016
+
+

Qui nous sommes:

+

Aliments d’ici est un comité de recherche et de mise en pratique d’alternatives pour se nourrir de manière locale, saine et abordable. Nos activités visent le partage de connaissances, la sensibilisation, l’action collective et la solidarité ville-campagne. Aliments d’ici est un comité du Groupe de recherche d’intérêt public (GRIP), qui travaille à  l’UQAM sur les enjeux sociaux et environnementaux dans une perspective d’écologie sociale, en soutenant des projets étudiants de recherche, de sensibilisation et d’action.

+

Description du projet à  coordonner :

+

Aliments d’ici cherche un ou une chargé.e de projet pour coordonner un marché fermier d’aliments biologiques et locaux qui aura lieu à  l’été et à  l’automne 2016, à  l’UQAM (Place Pasteur). L’objectif est d’offrir une alternative d’alimentation santé dans le coeur du quartier latin et de créer un rendez-vous pour la communauté. Le marché a lieu une fois par semaine, les mercredis sur la Place Pasteur (coin St-Denis/Maisonneuve) de 12h à  18h. Ce sera la 3e édition du Marché cette année, et les défis que nous rencontrons sont les suivants : assurer la participation des producteurs, mobiliser une équipe de bénévoles, faire rayonner l’activité par de larges communications.

+

cliquez ici pour avoir toutes les infos sur le poste!

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2016/05/25/le-crapaud-recrute/index.html b/2016/05/25/le-crapaud-recrute/index.html new file mode 100644 index 0000000..9b4733d --- /dev/null +++ b/2016/05/25/le-crapaud-recrute/index.html @@ -0,0 +1,185 @@ + + + + + + + + + +Le CRAPAUD recrute – GRIP-UQÀM + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + Photo de côté paysage d’un rang de plantation. Plusieurs personnes sont de chaque côté, en train de désherber. +
+ +

Le CRAPAUD recrute

+ +
+ +
+ +

Le Collectif de recherche en aménagement paysager et agriculture urbaine durable (CRAPAUD), comité du GRIP, est à  la recherche de personnes motivées et passionnées pour rejoindre leur  équipe en été !

+

Les informations pour les postes suivans se trouvent à  l’adressse : https://www.lecrapaud.org/emplois2016

+

Horticulteur-trice  /  Animateur-trice des jardins /  Animateur-trice de camp de jour  /  Responsables du service de garde

+

Vous voulez développer vos compétences et connaissances en agriculture urbaine ? Voici une offre de stage qui pourrait vous intéresser : Stage en Agriculture urbaine (info au lien ci-dessus)

+

Faites parvenir votre C.V et une lettre de présentation en précisant le poste avant le
+dimanche 29 mai à  20h à  l’adresse indiquée sur le site du crapaud.

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2016/09/06/appel-a-tous-et-toutes-recherche-daccompagnateur-trice-internationaux-ales-en-colombie/index.html b/2016/09/06/appel-a-tous-et-toutes-recherche-daccompagnateur-trice-internationaux-ales-en-colombie/index.html new file mode 100644 index 0000000..acdb3c8 --- /dev/null +++ b/2016/09/06/appel-a-tous-et-toutes-recherche-daccompagnateur-trice-internationaux-ales-en-colombie/index.html @@ -0,0 +1,193 @@ + + + + + + + + + +Appel à tous et toutes: Recherche d’accompagnateur-trice internationaux-ales en Colombie – GRIP-UQÀM + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + Bannière du PASC. À l’avant-plan est écrit en blanc “Projet Accompagnement Solidarité Colombie”. L’arrière-plan montre un dégradé entre trois images. À gauche se trouve quelqu’un debout pagayant une embarcation avec des contenants bleus. Au centre se trouve une forêt aux arbres épars. À droite se trouve une manifestation du 1er mai avec des gens tenant une pancarte en espagnol dont la majorité est cachée par le mot “Colombie” à l’avant-plan. +
+ +

Appel à tous et toutes: Recherche d’accompagnateur-trice internationaux-ales en Colombie

+ +
+ +
+ +

*English version follows*

+

Le Projet Accompagnement Solidarité Colombie (PASC) est actuellement en période de recrutement de volontaires pour se rendre en Colombie au cours de l’année 2016-2017, afin d’accompagner des communautés et des organisations sociales en résistance civile.

+

Depuis plus de 13 ans, le PASC promeut une vision anti-impérialiste de la solidarité internationale visant à assurer la protection des communautés en encourageant leur autonomie tout en construisant des liens de solidarité directe entre les mouvements sociaux du Québec et de la Colombie.

+

Si vous êtes intéressé.e à participer à une expérience de solidarité directe en Colombie pour une durée minimum de trois mois, visitez www://pasc.ca pour plus d’information. Vous y trouverez le formulaire d’inscription ainsi que tout ce qui concerne les formations pré-départs.

+

Une formation est planifiée à partir du mois d’octobre 2016. Nous y parlerons notamment des mesures de sécurité garanties lors de la période d’accompagnement.

+

Pour toute question, veuillez écrire à info@pasc.ca.

+

Renseignez-vous auprès de votre département sur les possibilités de faire créditer ce stage dans le cadre de vos études.

+

 ***************

+

CALL OUT: International accompaniers in Colombia

+

The Project Accompaniment Solidarity Colombia (PASC) is currently looking for individuals willing to go to Colombia during 2016-2017, in order to accompany communities and social organizations in civil resistance.

+

The PASC has been promoting an anti-imperialistic vision of international solidarity for 13 years now. Through accompaniment, the PASC aims at participating in the protection of communities while encouraging their autonomy and at constructing direct links of solidarity between social movements in Quebec and Colombia.

+

If you’re interested in having an experience in direct solidarity in Colombia for a minimum stay of three months, visit our website for more information: www.pasc.ca. You will find the application form and all the information concerning the pre-departure training process.

+

Training activities are planned in October 2016. The sessions will include all the information concerning security during the accompaniment period.

+

For any question, please contact info@pasc.ca

+

Check with your department possibilities to obtain credit for this course as part of your studies.

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2016/09/06/camp-de-convergence-ecologiste-a-chicoutimi/index.html b/2016/09/06/camp-de-convergence-ecologiste-a-chicoutimi/index.html new file mode 100644 index 0000000..18ebd49 --- /dev/null +++ b/2016/09/06/camp-de-convergence-ecologiste-a-chicoutimi/index.html @@ -0,0 +1,186 @@ + + + + + + + + + +Camp de convergence écologiste à Chicoutimi! – GRIP-UQÀM + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + Photo carrée de détails d’une peinture abstraite formée de différentes courbes et lignes de peintures jaune, rose et bleu s’entremêlant sans se mélanger. +
+ +

Camp de convergence écologiste à Chicoutimi!

+ +
+ +
+ +

Camp de convergence écologiste à Chicoutimi.

+

Le Nitassinan/Saguenay-Lac-St-Jean se voit depuis quelques temps convoité pour de grands projets extractivistes. L’un d’entre eux – d’ailleurs qualifié de  »calibre mondial » par ses propres promoteurs – consiste en l’installation d’un port méthanier sur le site de Grande-Anse (La Baie, Saguenay). Le chantier comprend la construction d’un gazoduc de 650 km et d’installations pour entreposer et réfrigérer le méthane avant de le transborder dans des cargos. Une telle entreprise impliquera une augmentation du trafic maritime dans le parc marin du Saguenay-Saint-Laurent – seul espace maritime protégé au Québec –, sans compter la destruction qu’elle engendrera et le danger inhérent aux possibles bris du gazoduc [1]. De plus, le va-et-vient des méthaniers dans la rivière Saguenay menace de remuer les dépôts de boues rouges hautement toxiques, véritables déchets de l’industrie aluminière dormant au fond du cours d’eau.

+

D’autres projets, comme le creusage d’un deuxième lac de bauxite près d’un quartier résidentiel ainsi que l’exploitation d’une mine de phosphate, sont autant de raisons de s’organiser et de lutter contre cette économie délétère déifiée par les multinationales et leurs copains des gouvernements. Face à leurs grands projets inutiles, le devoir de résistance est évidemment de mise, mais nous devons aller encore plus loin et créer nous-mêmes nos propres alternatives à ce système auto-destructeur. Plus question d’accepter les miettes que la grande entreprise nous présente avec mépris pour  »assurer »  pendant un temps notre  »bien-être » mais surtout leur  »acceptabilité sociale ».

+

Pour toutes les raisons énumérées ci-haut, nous lançons un appel généralisé aux écologistes, aux communautés autochtones, et à tou.te.s les allié.e.s et ami.e.s afin de participer à un campement au centre-ville de Chicoutimi. L’événement se tiendra du 23 au 25 septembre, sur un terrain vague occupé sporadiquement depuis 3 ans par des habitant.e.s du quartier et des membres du Collectif Emma Goldman [2]. Le lieu qui sera occupé est l’un des derniers espaces verts d’un centre-ville bétonné de but en blanc. Ce campement sera l’occasion de se réseauter et faire converger nos luttes. Des membres du Regroupement des familles traditionnelles de chasseurs-cueilleurs Ilnuatsh seront aussi sur place pour parler de la lutte qu’ellils mènent contre les projets coloniaux Tshash Petapan et Regroupement Petapan.

+

L’horaire complet sera dévoilé le 15 septembre!

+

[1] Pour plus d’informations : https://www.borealisation.org/borealisation-soppose-au-projet-de-port-methanier-energie-saguenay-2/ ou allez consulter l’événement Facebook ici!
+[2] Le terrain se situe au coin des rues Jacques-Cartier et Tessier.

+

Le groupe recherche aussi du matériel. Cliquez ici pour voir la liste!

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2016/09/28/assemblee-generale/index.html b/2016/09/28/assemblee-generale/index.html new file mode 100644 index 0000000..5cb6a4f --- /dev/null +++ b/2016/09/28/assemblee-generale/index.html @@ -0,0 +1,196 @@ + + + + + + + + + +Assemblée générale du GRIP! – GRIP-UQÀM + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + Dessin de trois visages stylisés rappelant une peinture. Le visage de gauche est rose aux cheveux courts rouges, yeux noirs et aux lèvres et sourcils verts. Celui du centre est beige aux cheveux et yeux verts, joues et lèvres rouges. Celui de droite est bleu, aux cheveux, sourcils, yeux et nez mauves, et aux joues et lèvres rouges. L’arrière-plan est blanc avec des lignes vertes de contour de fleurs. +
+ +

Assemblée générale du GRIP!

+ +
+ +
+ +

À vos agendas! L’heure des bilans et du plan d’action a sonné!

+

*Tout-e étudiant-e est membre du GRIP! Venez découvrir les activités des comités du GRIP, participer, et vous impliquer!*

+

QUAND: Mardi le 11 octobre à 17h00

+

OU: Local V-2445 (pavillon du 209 Ste-Catherine Est)

+

À L’ORDRE DU JOUR:

+
    +
  •  Adoption du procès-verbal du 31 mars 2016
  • +
  • Les politiques: Comité de médiation, Politique d’inclusion, Politique d’embauche, Contrat de travail
  • +
  • Règlements généraux: Intérim au Comité Exécutif, Composition du Conseil d’administration
  • +
  • Activités des comités : Bilans, Plans d’action, Budgets
    +
  • +
  • Varias!
  • +
+

Pour obtenir l’ensemble des documents préparatoires pour l’Assemblée cliquez ici!

+

Au plaisir de vous y voir! Partagez aussi l’événement facebook dans vos réseaux sociaux!

+

AG - mi octobre

+

+

 

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2016/10/31/stage2017/index.html b/2016/10/31/stage2017/index.html new file mode 100644 index 0000000..9a4d1d0 --- /dev/null +++ b/2016/10/31/stage2017/index.html @@ -0,0 +1,200 @@ + + + + + + + + + +LE GRIP RECHERCHE UN-E CHARGÉ-E DE PROJET – GRIP-UQÀM + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + Dessin réaliste de pissenlits en couleurs rogné, montrant les différentes parties et étapes de floraison d’un pissenlit : les feuilles, les tiges, les fleurs, les racines, etc. +
+ +

LE GRIP RECHERCHE UN-E CHARGÉ-E DE PROJET

+ +
+ +
+ +

 

+

Offre de stage non-rémunéré: Chargé-e de projet

+

Groupe de recherche d’intérêt public- UQAM

+

dandelionMandat du/de la stagiaire

+

Avec la supervision régulière de la coordination du GRIP et en collaboration avec l’ensemble de l’équipe, le / la stagiaire aura pour mandat de réaliser le projet de revue « L’Intérêt Public » de l’hiver 2017. Les tâches liées au mandat seront les suivantes :

+
    +
  • Gestion du projet: élaboration d’échéancier, vigilance budgétaire du projet, etc.
  • +
  • Mobilisation et visibilité: stratégie de communications, diffusion du projet, appel de contributions.
  • +
  • Supervision et suivis des contributions (révisions, conseils, orientations quand pertinent).
  • +
  • Montage et mise en page de la revue, élaboration d’une identité graphique avec la graphiste du GRIP et le reste de l’équipe.
  • +
  • Stratégie de diffusion du produit final, version papier et web.
  • +
  • Organisation d’un événement public de lancement de la publication.
  • +
  • Participation à la vie démocratique de l’organisme.
  • +
+

+

Modalités du stage :

+

10 heures/semaine, pendant 15 semaines. Grande flexibilité d’horaire. Entrée en fonction la semaine du 9 janvier. Ce stage peut être crédité dans le cadre d’études en communications.

+

Pour soumettre votre candidature:

+

Envoyez votre CV et une lettre dans laquelle vous expliquez brièvement vos motivations et ce qu’est l’écologie sociale pour vous. (1 page maximum). Faites parvenir ces documents à l’adresse activite.grip@gmail.com avant le jeudi 1er décembre 2016 à 17h00. Seul-e-s les candidatures retenues seront contactées, et ce, la semaine du 5 au 11 décembre.

+

Voir l’offre de stage version PDF

+

 

+

 

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2016/11/29/le-grip-uqam-embauche/index.html b/2016/11/29/le-grip-uqam-embauche/index.html new file mode 100644 index 0000000..4316ee8 --- /dev/null +++ b/2016/11/29/le-grip-uqam-embauche/index.html @@ -0,0 +1,183 @@ + + + + + + + + + +Le GRIP-UQAM embauche!!! ** Candidatures avant le 5 janvier 2017 ** – GRIP-UQÀM + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + Dessin de deux écrous bruns dont sort, au centre, une plante naissante, verte, à deux grandes feuilles et une petite. +
+ +

Le GRIP-UQAM embauche!!! ** Candidatures avant le 5 janvier 2017 **

+ +
+ +
+ +

Offre d’emploi: Coordination aux activités du GRIP-UQAM 

+

Le GRIP est à  la recherche d’une personne pour combler le poste de Coordination aux activités. Il s’agit d’un emploi à  temps partiel réservé aux étudiant-e-s de l’UQAM.

+

Toute les informations concernant le poste sont disponibles ici !

+

Pour postuler, envoyez CV et lettre de présentation à  activite.grip@gmail.com, avec comme objet « Candidature – coordination » avant le jeudi 5 janvier 2017 à minuit!
+

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2016/12/15/defi-une-semaine-sans-viande/index.html b/2016/12/15/defi-une-semaine-sans-viande/index.html new file mode 100644 index 0000000..ee2605a --- /dev/null +++ b/2016/12/15/defi-une-semaine-sans-viande/index.html @@ -0,0 +1,196 @@ + + + + + + + + + +Une Semaine Sans Viande ! – GRIP-UQÀM + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + Photo en couleurs d’un bol de légumes cuits, majoritairement oranges et verts, incluant zucchinis, champignons, patates douches, poivrons et une touche de luzerne. Sur le bol à gauche sont déposées deux baguettes en bois. Le bol est sur une nappe lignée blanc et gris. Sur la nappe sont déposés des brins de fines herbes et deux tranches de gingembres. +
+ +

Une Semaine Sans Viande !

+ +
+ +
+ +

Du vendredi 13 au jeudi 19 janvier : Inscription ici !

+

Suivre le lien vers la page de la Semaine sans viande pour des :
+

+
    +
  • Recettes,
  • +
  • Infos sur les enjeux
    +Environnementaux, Éthiques, Santé
  • +
+

et le programme de la semaine :

+
    +
  • Expo sur les animaux aquatiques,
  • +
  • Ciné-discussion le 18 janvier
  • +
  • Conférence le 19 : Elise Desaulniers
  • +
  • plus d’activités seront annoncées bientôt…
  • +
+

Une invitation du Groupe de recherche d’intérêt public,
+de l’Association Végé. de l’UQAM et du Ras-le-bol

+

À l’occasion du Défi Énergie 2017 à l’UQAM

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2017/02/17/vers-un-bistro-coop-a-luqam/index.html b/2017/02/17/vers-un-bistro-coop-a-luqam/index.html new file mode 100644 index 0000000..bd14c42 --- /dev/null +++ b/2017/02/17/vers-un-bistro-coop-a-luqam/index.html @@ -0,0 +1,191 @@ + + + + + + + + + +Rencontre le 22 mars : Vers un bistro coop à l’UQAM ? – GRIP-UQÀM + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + Bannière d’annonce. À gauche se trouve un dessin en couleurs de sandwichs tortillas, prunes et d’un croissant. À droite, il est écrit en blanc sur bandes rouges “Une vraie scène culturelle à l’UQAM ? Des repas chaux abordables ? Un espace de travail, de rencontre et de coopération? Pourquoi pas ? Dans l’ancien bistro Sanguinet ? Proposons.” L’arrière-plan est en dégradé de gauche à droite d’un gris foncé presque noir à un gris plus pâle. +
+ +

Rencontre le 22 mars : Vers un bistro coop à l’UQAM ?

+ +
+ +
+ +

Rencontre pour la fondation de la coopérative : lundi 27 mars à 17:30, local DS-3315

+

Dernières nouvelles : Nous avons déposé les documents du projet à l’UQAM et ensuite été reçu.e.s pour présenter le tout au comité de sélection pour l’espace de l’ancien Bistro Sanguinet. Le comité nous donnera une réponse d’ici probablement la fin du mois.

+

D’ici là, continuons les démarches, afin d’être prêts à s’engager si l’UQAM choisit notre projet.

+

Venez y travailler avec nous !

+

Si vous êtes dans une organisation étudiante ou communautaire voulant être membre de la coop dès sa fondation, il s’agit d’adopter en c.a. l’équivalent de la motion suivante, pour la Coopérative de solidarité du Quartier latin.

+

Prochaines étapes :

+

D’abord, la coopérative doit être fondée, ce qui implique de se réunir, ceux et celles voulant aider et/ou éventuellement être membres fondateurs et fondatrices, et terminer les propositions de mode de fonctionnement qui seront proposés à l’Assemblée d’organisation, en avril.

+

Différents textes sont à rédiger: règles d’inclusivité, d’embauche, etc. il y a place à quelques équipes, ainsi que pour du travail de préparation pratique sur chacun des volets : alimentaire, événementiel et communautaire.

+

Une rencontre mercredi dernier fut le moment de se donner un plan, de voir qui est intéressé.e par quels volets. Nous poursuivrons ce travail lundi, bienvenue à tou.te.s. Si vous pouvez pas y être ce jour-là mais vous souhaitez donner un coup de main, avisez-nous, via le lien suivant : https://goo.gl/OMrQgY

+

Au plaisir de discuter de ça ensemble lundi le 27 ! Nous présenterons ensuite le projet à l’AG du GRIP, mercredi le 29, 17h au SH-2120.

+

L’équipe du projet de bistro-coopératif

+

Plus d’info au : https://www.gripuqam.org/projetcoop

+

Partagez l’invitation dans vos réseaux

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2017/03/16/assemblee-generale-le-29-mars-etudiant-e-s-vous-etes-membre/index.html b/2017/03/16/assemblee-generale-le-29-mars-etudiant-e-s-vous-etes-membre/index.html new file mode 100644 index 0000000..26f19e1 --- /dev/null +++ b/2017/03/16/assemblee-generale-le-29-mars-etudiant-e-s-vous-etes-membre/index.html @@ -0,0 +1,207 @@ + + + + + + + + + +Assemblée générale le 29 mars : étudiant.e.s, vous êtes membre ! – GRIP-UQÀM + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + Bannière d’Assemblée générale. Il est écrit en haut à droite “29 mars 2017 17h / Local SH-2120 Pavillon SH-200 Sherbrooke Ouest” L’arrière-plan est vert pâle. À gauche, il y a 4 feuilles vert foncé pointues de tailles différentes. Les écritures sont blanches. +
+ +

Assemblée générale le 29 mars : étudiant.e.s, vous êtes membre !

+ +
+ +
+ +

Mercredi le 29 mars, 17h au SH-2120.
+

+

Deux rencontres d’information ont lieu lundi prochain, 27 mars, à 13h au PK-2523 et à 17h au DS-3315, pour présenter les instances du GRIP et les différentes possibilités pour s’y impliquer, ainsi que comment proposer un nouveau comité. Ces postes seront à combler et les comités seront reconnus le 29 mars lors de l’Assemblée générale, à 17h au SH-2120 (200 Rue Sherbrooke Ouest).

+

L’ordre du jour proposé est le suivant :

+

0. Ouverture
+1. Procédure
+1.1 Animation, prise de notes
+1.2. Ordre du jour
+1.3. Adoption du pv
+2. Finances et subventions:
+2.1. Comité d’attribution de subventions
+2.2. États financiers et vérificateur externe
+3. Composition du Conseil d’administration
+4. Élections
+5. Reconnaissance des comités
+6. Projet Coop
+7. Politique de médiation
+8. Avis de motion
+9. Varia
+10. Fermeture

+

Tout.e étudiant.e de l’UQAM est membre du GRIP, soyez présent.e.s en grand nombre à l’assemblée …et partagez l’invitation dans vos réseaux  (entre autres via : https://www.facebook.com/events/1362929593778009/ )

+

Pour connaître les activités et projets des divers comités du GRIP : gripuqam.org/comites
+le projet de bistro-coopératif : gripuqam.org/projetcoop
+les nouveaux comités qui seront proposés et
+voir comment participer à ces projets de recherche, de sensibilisation et d’action,
+à l’Assemblée générale de mercredi, les comités y seront et les possibilités d’implication seront présentées.

+

On abordera aussi quelques éléments communs : processus de médiation, de coordination, de subventions, etc. Dans l’ordre du jour ci-dessus se trouvent des documents sur chaque point proposé.

+

Le Groupe de recherche d’intérêt public (GRIP) a aussi besoin de relève sur ses instances de coordination. Pour en savoir plus sur le GRIP, sa mission, ses instances, comment s’y impliquer ou comment y proposer de nouveaux comités, on vous invite aux deux rencontres d’information lundi aux lieux et heures donnés au début de cette page.

+

Pour toute question, vous pouvez nous écrire ou nous appeler : grip(a)uqam.ca 514-987-3000 p.4077

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2017/04/27/emplois-dete-2017-au-grip/index.html b/2017/04/27/emplois-dete-2017-au-grip/index.html new file mode 100644 index 0000000..e0abbfb --- /dev/null +++ b/2017/04/27/emplois-dete-2017-au-grip/index.html @@ -0,0 +1,212 @@ + + + + + + + + + +Emplois d’été au GRIP : horticulture, animation des jardins, marché fermier et projet coop – GRIP-UQÀM + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + Il est écrit "JOBS D'ÉTÉ", chaque lettre d'une couleur différente sur des rectangles de couleurs différentes par rapport aux lettres et aux autres rectangles, sur fond rouge. +
+ +

Emplois d’été au GRIP : horticulture, animation des jardins, marché fermier et projet coop

+ +
+ +
+ +

Quatre postes sont ouverts, dans le cadre des subventions Emplois d’été Canada (les conditions pour être éligible à la subvention se trouvent ci-dessous), ainsi qu’un autre poste avec le comité Aliments d’ici.

+

* La date limite pour postuler sur les 2 postes du comité Aliments d’ici est étendue, jusqu’à mercredi 17 mai, minuit. *

+

Les postes sont les suivants :

+

Responsable aux activités du Marché fermier (communications et programmation, comité Aliments d’ici) : 7 semaines à 30 h. à partir du 29 mai, avec possibilité de prolongation jusqu’au 3 novembre: voir l’offre d’emploi.

+

Le comité Aliments d’ici ouvre aussi le poste de coordination logistique du Marché fermier, 16 h/semaine : du 29 mai jusqu’au 13 novembre: voir l’offre d’emploi.

+

Horticulteur-trice (au CRAPAUD) : 7 semaines à 35 h. à partir du 15 mai : (déjà comblé)

+

Responsable logistique pour l’espace communautaire (projet de coop de solidarité) : 7 semaines à 30 h. à partir du 29 mai  (déjà comblé).

+

Animateur-trice des jardins, responsable des événements et des ateliers (au CRAPAUD) : 7 semaines à 35 h. à partir du 22 mai : voir l’offre d’emploi. (période de candidature terminée)

+

* * *

+

Pour postuler (sauf pour le poste de coordination logistique du marché à 16h/sem.), vous devez répondre aux conditions d’embauche d’Emplois d’été Canada :

+
    +
  • +

    Être âgé-e de 15 à 30 ans (inclusivement) au début de l’emploi;

    +
  • +
  • +

    Avoir été inscrit-e comme étudiant-e à temps plein au cours de l’année d’études précédente;

    +
  • +
  • +

    Envisager de retourner aux études à temps plein au cours de l’année d’études suivante;

    +
  • +
  • +

    Suivre soit un programme d’études secondaires, postsecondaires, professionnelles ou techniques;

    +
  • +
  • +

    Être citoyen-ne canadien-ne, résident-e permanent-e ou une personne à laquelle on a accordé une protection en tant que réfugié-e en vertu de la Loi sur l’immigration et la protection des réfugiés*;

    +

    * Les étudiant-e-s étranger-e-s ne sont pas admissibles.

    +
  • +
  • +

    Avoir légalement le droit de travailler selon les lois et les règlements provinciaux/territoriaux pertinents.

    +
  • +
+

Les étudiant-e-s autochtones et membres d’une minorité visible sont invité-e-s à postuler et sont priorisé-e-s, à compétences égales, dans le cadre de cette subvention.

+

(pour plus d’information : www.canada.ca/fr/emploi-developpement-social/services/financement/emplois-ete/modalites-accord.html )

+

+ + +

+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2017/11/10/assemblee-generale-extraordinaire/index.html b/2017/11/10/assemblee-generale-extraordinaire/index.html new file mode 100644 index 0000000..c3c53cb --- /dev/null +++ b/2017/11/10/assemblee-generale-extraordinaire/index.html @@ -0,0 +1,213 @@ + + + + + + + + + +Assemblée générale extraordinaire le 22 novembre! – GRIP-UQÀM + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + Affiche de l'assemblée générale extraordinaire du 22 novembre 2017. Une silhouette d'une fleur de pissenlit en noir, avec écologie sociale écrit en lettres attachées en blanc à l'intérieur, sur fond jaune. +
+ +

Assemblée générale extraordinaire le 22 novembre!

+ +
+ +
+ +

 

+

Assemblée générale extraordinaire du GRIP

+

 

+ + + + + + + +
22 novembre à 17:00 – 21:00 EST
+ + + + + + + +
Coop Les Récoltes
+1679-1681 rue St-Denis, Montréal H2X 3K4
+

Le GRIP a le plaisir de vous inviter à son assemblée générale extraordinaire de budget. Celle-ci aura lieu le mercredi 22 novembre à partir de 17h à La Coop Les Récoltes (au 1679 rue St-Denis)

+

Cette assemblée permettra aux différents comités membres du GRIP de présenter leur plan d’action et leur budget pour l’année à venir et nous finirons les points de la dernière AG. Comme toujours, votre présence est essentielle !

+

Voici l’ordre du jour proposé:
+1. Ouverture
+2. Procédures
+2.1 Élection de l’animation et du secrétariat
+2.2 Adoption du procès-verbal du 29 mars 2017
+3. Coop Le Récoltes
+4. Politique de médiation
+5. Avis de motion sur une position anticolonialiste et féministe du GRIP
+6. Autres points à discuter
+7. Budget et plan d’action
+8. Varia
+9. Fermeture

+

 

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2018/02/19/mercredi-7-mars-assemblee-generale-de-reconnaissance-des-comites/index.html b/2018/02/19/mercredi-7-mars-assemblee-generale-de-reconnaissance-des-comites/index.html new file mode 100644 index 0000000..1bc0c8e --- /dev/null +++ b/2018/02/19/mercredi-7-mars-assemblee-generale-de-reconnaissance-des-comites/index.html @@ -0,0 +1,217 @@ + + + + + + + + + +Mercredi 7 mars : Assemblée générale d’élection et de reconnaissance des comités – GRIP-UQÀM + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + Assemblée générale du GRIP écrit dans un cercle vert avec à l'arrière plan les feuilles et les racines d'un pissenlit en vert pâle à foncé sur un fond vert moucheté de vert foncé à vert pâle. Plus bas est écrit "Mercredi 7 mars 2018 17h". Sur la ligne suivante "Au R-M110". Suit ensuite l'ordre du jour et quelques renseignements généraux. +
+ +

Mercredi 7 mars : Assemblée générale d’élection et de reconnaissance des comités

+ +
+ +
+ +

Pour obtenir l’ensemble des documents préparatoires à l’assemblée générale, cliquez ici!

+

Voici les points qui seront abordés :

+

Bilan d’activités

+

Le GRIP-UQAM est actuellement composé de 13 comités, qui feront un bilan de leurs activités. Ils aborderont aussi durant ce point une proposition de modification du budget du GRIP.

+

Reconnaissance des comités

+

Ce point permet de voter la reconnaissance des comités déjà existant et d’accepter dans le GRIP de nouveaux comités.

+

Élections

+

Le GRIP-UQAM est à la recherche de candidat.e.s aux postes de représentant.e.s étudiant.e.s (un.e par association facultaire) et de membres du CE :

+

Être représentant.e étudiant.e au C.A. du GRIP ?

+

? Le ou la représentant.e étudiant.e au C.A. assurera le lien avec son association facultaire et aura comme rôle entre autres de :

+

? Rendre compte des activités du GRIP à son association ;

+

? Communiquer au GRIP les questions provenant de son association ;

+

? Il ou elle pourra également :

+

? Aider à diffuser les activités du GRIP aux membres de son association ;

+

? Proposer de nouvelles façons pour mieux rejoindre les champs d’intérêt de ses membres et favoriser leur implication dans des projets à portée écologique et sociale.

+

? S’impliquer sur un aspect particulier de l’administration du GRIP (communications, finances, embauche, évaluation, politiques internes, etc.)

+

? Être membre du C.A. du GRIP est une occasion de contribuer au projet d’une société écologique et conviviale, dans un organisme étudiant dirigé par ses membres et relié avec une grande diversité d’acteurs uqamiens et externes.

+

? C’est aussi une façon de mettre à contribution et parfaire vos compétences et votre expérience d’implication communautaire et étudiante.

+

? Les mandats sont d’une durée d’un an. ? Le C.A. se réunit environ deux fois par session et au besoin durant l’été.

+

? Le C.A. veille à ce que l’organisme soit administré en conformité avec sa mission, ses règlements et ses mandats d’assemblée générale.

+

? Il est composé des sept représentant.e.s étudiant.e.s facultaires, des cinq membres du conseil exécutif (CE) et d’un.e représentant.e d’un groupe écologiste.

+

? Le conseil d’administration doit rechercher à prendre ses décisions par consensus. Si le consensus n’est pas atteignable, les décisions seront prises à majorité simple des membres du C.A.

+

? Les membres d’un conseil d’administration ont des droits et responsabilités devant la loi (voir entre autres le document “devoirs des membres du CA” disponible sur le site du GRIP : www.gripuqam.org ).

+

Si vous souhaitez plutôt être membre du conseil exécutif du GRIP, tout les postes seront ouverts.

+

Que fait le conseil exécutif (CE)  ?

+
C’est un lieu d’implication où l’on se trouve au coeur des enjeux sociaux et écologiques, à  faciliter le travail de plusieurs comités en diffusant, coordonnant, accueillant de nouveaux projets, proposant des activités mobilisantes. Avec les employé.e.s à  la coordination, le CE voit à  divers suivis et décisions lors de sa rencontre hebdomadaire, sur une variété de sujets qui animent la vie de l’organisme.
+

L’exécutif se répartit les rôles suivants, tout en se partageant le travail souvent sur une base plus informelle par champs d’intérêt et disponibilités :

+
+
+
* Responsable général-e
+
* Responsable du secrétariat
+
* Responsable du trésor
+
* Responsable de l’interne
+
* Responsable de l’externe
+

Règlements généraux

+

À ce point, l’assemblée traitera un avis de motion ayant été déposé et changeant les règlements généraux du GRIP et possiblement d’autres propositions en ce sens.

+

Pour mieux connaître les rôles et le fonctionnement des différentes instances (PIC, CE, CA) voir les règlements généraux du GRIP, sur notre site web. www.gripuqam.org . Pour nous contacter : grip@uqam.ca  , 514-987-3000 #4077

+
+
+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2018/05/17/prolongation-2-emplois-etudiants/index.html b/2018/05/17/prolongation-2-emplois-etudiants/index.html new file mode 100644 index 0000000..d87b712 --- /dev/null +++ b/2018/05/17/prolongation-2-emplois-etudiants/index.html @@ -0,0 +1,194 @@ + + + + + + + + + +PROLONGATION : 2 EMPLOIS ÉTUDIANTS! Le GRIP-UQAM embauche, joignez notre équipe! – GRIP-UQÀM + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + Image d'un Uncle Sam masqué en noir et blanc avec le mot SUBVERT au dessus. +
+ +

PROLONGATION : 2 EMPLOIS ÉTUDIANTS! Le GRIP-UQAM embauche, joignez notre équipe!

+ +
+ +
+ +

Offres d’emplois: Coordination aux activités et soutien aux communications/activités du GRIP-UQAM
+

+

Le GRIP-UQAM est à  la recherche de personnes pour combler les postes:

+

1) coordination aux activités à temps partiel (candidatures avant le 10 juin à minuit);

+

2) soutien aux communications et aux activités à temps plein (candidatures avant le 10 juin à minuit);

+

Le salaire pour toutes les personnes travaillant au GRIP-UQAM est actuellement 16,90$/h. Les horaires sont très flexibles, c’est un lieu de travail en autogestion avec syndicalisation libre (https://sitt.iww.org/).

+

Une préférence sera accordée aux personnes étudiants à l’UQAM  et aux personnes marginalisées (femmes, personnes non­-cisgenre, non-hétéros, racisées, neuroatypiques, etc.).

+

Qu’est-ce que le GRIP-UQAM?

+

Fondé en 1993, le Groupe de Recherche d’Intérêt Public (GRIPUQÀM) est un collectif universitaire ouvert à tous et toutes les étudiant-e-s désirant s’impliquer, s’interroger et agir sur les questions environnementales et sociales.

+

Le GRIPUQÀM est un observatoire critique, une pouponnière d’idées et un lieu de diffusion permettant d’envisager le changement social. Il offre des informations et des outils à la communauté uqamienne afin de mieux saisir les enjeux qui sont reliés à l’écologie sociale.

+

Par, pour et avec la communauté uqamienne, le GRIP réfléchit sur les enjeux socio-écologiques qui touchent directement et indirectement tous les individus et toutes les sociétés présentes et futures.

+

Devant les défis posés par la crise écologique (changements climatiques, perte de biodiversité, rupture des mécanismes naturels de régulations, etc.) due à l’activité humaine, le GRIP travaille, recherche et s’appuie sur des modèles politico-économiques alternatifs, existants et à construire, fondés sur le développement d’initiatives locales, communautaires et écologiques axées sur la démocratie participative, la coopération et le partage des connaissances et des ressources.

+

En remettant en question le productivisme, la croissance économique illimitée ainsi que la culture économiciste dominante, le GRIP réinterprète et réaffirme l’interdépendance des humains entre eux et elles (entraide et solidarité) et entre les humains et les écosystèmes (l’humanité dans la nature).

+

Engagé dans une réappropriation critique de l’espace physique, culturel et symbolique, grâce à la sensibilisation, la concertation, la transdisciplinarité et la mise en relation des partenaires intra et extra uqamiens dans un but d’autonomie collective, sa mission est d’encourager, dans la communauté, le sentiment d’appartenance au projet d’une société écologique et conviviale.

+

Pour plus d’informations sur le GRIP-UQAM, vous pouvez consulter la liste de nos comités https://gripuqam.org/comites/ .

+

Pour postuler, envoyez CV et lettre de présentation à  activite.grip@gmail.com, avec comme objet « Candidature – coordination aux activités » ou « Candidature – soutien aux communications et aux activités » avant le 10 juin minuit. Entrée en poste le 18 juin 2018.

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2018/11/04/mercredi-7-novembre-assemblee-generale-de-budget-de-plan-daction-et-de-bilan-du-grip-uqam/index.html b/2018/11/04/mercredi-7-novembre-assemblee-generale-de-budget-de-plan-daction-et-de-bilan-du-grip-uqam/index.html new file mode 100644 index 0000000..53e2de3 --- /dev/null +++ b/2018/11/04/mercredi-7-novembre-assemblee-generale-de-budget-de-plan-daction-et-de-bilan-du-grip-uqam/index.html @@ -0,0 +1,207 @@ + + + + + + + + + +Mercredi 7 novembre – Assemblée générale de budget, de plan d’action et de bilan du GRIP-UQAM – GRIP-UQÀM + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Mercredi 7 novembre – Assemblée générale de budget, de plan d’action et de bilan du GRIP-UQAM

+ +
+ +
+ +

GRIP-UQAM
+Mercredi le 7 novembre à 17h15
+Au DE-2570, pavillon de design, 1440, rue Sanguinet, H2X 3X9

+

Toutes les personnes qui étudient à l’UQAM sont membres du GRIP-UQAM ! Venez voir ce qu’on fait !

+

Ordre du jour proposé
+1. Ouverture
+2. Animation et secrétariat
+3. Procédures
+4. Adoption de l’ordre du jour
+5. Suivi des séances antérieures et avis de motion
+5.1. Adoption des procès-verbaux
+5.2. Avis de motion : Augmentation de la cotisation automatique non-obligatoire (CANO) de 0.50$ (25%) par étudiant-e par session
+5.3. Autres avis de motion
+5.4. Traitement des avis de motion
+5.4.1. Proposition de modification des règlements généraux https://tinyurl.com/2018-11-07-RG-GRIP (et renuméroter les paragraphes)
+5.4.2. Que de la somme allouée par la CANO du GRIP à chaque comité, excluant le comité de coordination, seul le tiers puisse aller en salaire (permanence et contractuelle). Que ceci prenne effet sur le budget 2017-2018. (1)
+6. Élection pour les postes vacants (jusqu’à la prochaine AG de vote)
+7. Budget et plan d’action
+7.1. Procédures de budget (balises et article 28 des règlements généraux)
+7.2. Présentation par les comités de leur budget et de leur plan d’action
+7.3. Adoption des budgets et des plans d’action
+8. Présentation et adoption du plan d’action du GRIP-UQAM pour l’année en cours
+9. Présentation et adoption du rapport annuel du conseil exécutif
+10. Présentation et adoption des bilans financiers
+11. Bilans des comités
+12. Reconnaissance des Services à la Vie Étudiante (SVE) de l’UQAM
+13. Varia
+14. Fermeture

+

Lien vers le document do convocation : https://tinyurl.com/2018-11-07-AG-GRIP

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2019/01/14/offre-demploi-comptabilite-et-co-coordination-administrative-grip-uqam-2019/index.html b/2019/01/14/offre-demploi-comptabilite-et-co-coordination-administrative-grip-uqam-2019/index.html new file mode 100644 index 0000000..99b8439 --- /dev/null +++ b/2019/01/14/offre-demploi-comptabilite-et-co-coordination-administrative-grip-uqam-2019/index.html @@ -0,0 +1,204 @@ + + + + + + + + + +Offre d’emploi : comptabilité et co-coordination administrative au sein du GRIP-UQAM ! – GRIP-UQÀM + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + Image d'un chat qui dort sur des cahiers, avec des lunettes accotées sur sa tête vis-à-vis de ses yeux. Entre ses pattes avant il y a un crayon. Un calculatrice est sur la page opposée. +
+ +

Offre d’emploi : comptabilité et co-coordination administrative au sein du GRIP-UQAM !

+ +
+ +
+ + + + + + +

+ + + +
+ + + +

+ + + +

Le GRIP-UQAM recherche activement

un-e candidat-e pour gérer la

comptabilité et le soutien administratif

au sein de l’équipe de coordination !



Priorité donnée aux étudiant.e.s de l’UQAM

et aux personnes subissant des formes d’oppressions.


* Poste de co-coordination administrative pour le Groupe de recherche d’intérêt public, GRIP-UQAM, un groupe étudiant en écologie sociale *



Candidatures acceptées jusqu’au mardi 29 janvier 2019 à minuit.

Entrée en poste en février 2019.


Le GRIP est un observatoire critique, une pouponnière d’idées et un lieu de diffusion permettant d’envisager le changement social. Composé de quatorze comités, l’organisme offre des informations et des outils à la communauté uqamienne afin de mieux saisir les enjeux qui sont reliés à l’écologie sociale. Notre mission est sur gripuqam.org.


Le GRIP-UQAM souhaite offrir des emplois de qualité. Pour ce faire, l’organisme encourage la flexibilité (d’horaire et de lieu, permettant une conciliation travail-famille), le bien-être au travail et une autogestion du milieu de travail.



Principales responsabilités


  • Tenir à jour les budgets, suivis des dépenses, des revenus et autres informations relatives aux comités du GRIP-UQAM, notamment dans le logiciel Sage 50;

  • Assurer le paiement des salaires et le respect des obligations fiscales et administratives du GRIP-UQAM;

  • Coordonner la préparation des états financiers et des audits;

  • Effectuer des demandes de subvention, le suivi et les rapports s’y rapportant;

  • Colliger et compléter les plans d’actions, bilans, rapports et autres documents administratifs en lien avec le financement de l’organisme et les exigences de l’UQAM;

  • Communiquer aux instances du GRIP les données à jour sur la situation financière et autres questions qu’elles doivent traiter;

  • Favoriser le rayonnement et le respect des valeurs et des principes du GRIP-UQAM ainsi que ses projets et comités;

  • Assurer une permanence au local et du travail de bureau;

  • Toutes tâches connexes.



Critères d’embauche


  • Expériences ou connaissances en comptabilité, notamment :

    • Tenue de livres;

    • Normes comptables applicables aux organismes à but non lucratif.

    • Écritures comptables de régularisation (amortissement, rapprochement des produits et des charges, etc.);

  • Maîtrise du logiciel Sage 50;

  • Avoir suivi des cours en comptabilité;

  • Maîtriser et partager les valeurs de l’organisme, notamment celles liées à l’écologie sociale, la démocratie directe et les pratiques anti-oppressives;

  • Expérience en autogestion et en milieu de travail horizontal;

  • Autonomie, enthousiasme, rigueur, persévérance, sens de l’organisation et des priorités;

  • Aptitudes au travail d’équipe, aux communications saines, diplomatie, tact, discrétion, très bonne écoute, conscience de ses propres privilèges et des réalités liées aux différentes oppressions;

  • Disponibilité, notamment pour faire des permanences pendant les débuts de session;

  • Atout : Expérience en informatique, avec WordPress et la préparation d’équipement audio-visuel lors d’événements;

  • Atout : Expérience dans les milieux étudiants uqamiens et militants montréalais et environnementaux;

  • Atout : Participation antérieure ou actuelle aux comités du GRIP-UQAM;

  • Les candidatures des personnes subissant des formes d’oppressions seront priorisées, notamment, mais sans être limité à cette liste, les femmes, personnes non­-cisgenre, non-hétéros, racisées, neuroatypiques, autochtones, en situation de handicap, etc.

  • Les candidatures des personnes étudiant à l’UQAM seront priorisées.

Conditions de travail:


  • 14 h/semaine à 17,28$/heure (au 1er septembre 2018) indexé annuellement;

  • Durée de l’emploi : permanent après une période de probation de 1 an, avec augmentation possible du nombre d’heures par semaine;

  • Horaire de travail flexible, sauf durant certaines semaines où il y a des besoins spécifiques (rentrée universitaire, etc.);

  • Travail dans un milieu autogéré;

  • Entrée en poste en février 2019.



Pour déposer votre candidature:


Faites parvenir votre c.v. ainsi qu’une lettre de présentation à l’adresse embauchegripuqam2019@googlegroups.com avant mardi le 29 janvier 2019 à minuit.



Le comité d’embauche


Les membres du comité d’embauche sont :

  • Stepoh

  • François Thibault

  • Michael Brophy



Extrait de la politique d’embauche du GRIP-UQAM


Inclusion  et protection


Aucun harcèlement, abus ou autre comportement oppressif de quelque nature ne sera toléré durant le processus d’embauche. Les candidat-e-s et membres du comité d’embauche ont droit à leur intégrité physique, morale et psychologique. Si un-e candidat-e ou un-e membre du comité d’embauche sent un certain malaise vis-à-vis un-e ou des membres du comité d’embauche ou un-e candidat-e, elle peut en aviser le CE et celui-ci devra sévir envers la ou les personnes fautives. Le ou la candidat-e doit être tenu-e au courant de ce droit dès le début du processus d’embauche.


Si un-e membre du comité d’embauche commet un abus de pouvoir ou une agression de quelque nature que ce soit, des sanctions seront déterminées selon la gravité de la situation par le C.E. ou le C.A.


Également toute personne impliquée dans le processus d’embauche a le droit d’avoir la même protection et inclusion que les personnes passées en entrevue.

+ + + + + + + +

 

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2019/04/18/mardi-30-avril-2019-assemblee-generale-delection-local-ds-1520/index.html b/2019/04/18/mardi-30-avril-2019-assemblee-generale-delection-local-ds-1520/index.html new file mode 100644 index 0000000..f926070 --- /dev/null +++ b/2019/04/18/mardi-30-avril-2019-assemblee-generale-delection-local-ds-1520/index.html @@ -0,0 +1,204 @@ + + + + + + + + + +MARDI 30 avril 2019 – Assemblée générale D’ÉLECTION – LOCAL DS-1520 – GRIP-UQÀM + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + Affiche de l'assemblée générale du 30 avril 2019. +
+ +

MARDI 30 avril 2019 – Assemblée générale D’ÉLECTION – LOCAL DS-1520

+ +
+ +
+ + +

Assemblée générale du GRIP-UQAM DS-1520, UQAM

+ + + +

Groupe de recherche d’intérêt public, groupe étudiant en écologie sociale

+ + + +

Tout-e étudiant-e de l’UQAM est membre, bienvenue !

+ + + +

Tout-e personne ayant donnée 10 heures au GRIP-UQAM est membre, bienvenue !

+ + + +

Mardi 30 avril 2019 à 18h15

+ + + +
+ + + +
  1. Ouverture
  2. Animation et secrétariat
  3. Procédures
  4. Adoption de l’ordre du jour
  5. Suivi des séances antérieures et avis de motion
    1. Adoption des procès-verbaux
    2. Avis de motion pour une séance future
    3. Traitement des avis de motion
      1. Qu’une assemblée générale future, qui se tiendra dans plus de 21 jours (après le 7 novembre 2018) et avec un quorum de 100 personnes étudiantE de l’UQAM, traitera de l’augmentation de la CANO de 0.50$ (25%) par étudiant-e par session.
      2. Que de la somme allouée par la CANO du GRIP à chaque comité, excluant le comité de coordination, seul le tiers puisse aller en salaire (permanence et contractuelle). Que ceci prenne effet sur le budget 2019-2020.
      3. Proposition de modification des règlements généraux et renuméroter les articles. https://tinyurl.com/GRIP-RG-2019-04
  6. Adoption du budget modifié
  7. Élection : comité exécutif (CE), conseil d’administration (CA), comité d’attribution des subventions (CAS), comité de médiation
  8. Reconnaissance des comités du GRIP par l’AG
  9. Suivi du comité de reconnaissance et services à la vie étudiante
  10. Remboursement de CANO de la prochaine session
  11. États financiers & auditrice-eur indépendant-e
  12. Varia
  13. Fermeture
+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2019/08/01/offre-demploi-2-postes-dassistant-e-administrative-a-lexecutif-au-grip-uqam/index.html b/2019/08/01/offre-demploi-2-postes-dassistant-e-administrative-a-lexecutif-au-grip-uqam/index.html new file mode 100644 index 0000000..4c2a1a9 --- /dev/null +++ b/2019/08/01/offre-demploi-2-postes-dassistant-e-administrative-a-lexecutif-au-grip-uqam/index.html @@ -0,0 +1,183 @@ + + + + + + + + + +Offre d’emploi – 2 postes d’assistant-e administrative à l’exécutif au GRIP-UQAM – GRIP-UQÀM + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Offre d’emploi – 2 postes d’assistant-e administrative à l’exécutif au GRIP-UQAM

+ +
+ +
+ + +

Les postes suivants sont affichés: 2 postes d’assistant-e administrative à l’exécutif au GRIP-UQAM, un groupe étudiant en écologie sociale.
https://gripuqam.org/wp-content/uploads/2019/08/offredemploi.pdf
→ Candidatures acceptées jusqu’au 25 août 2019 à minuit.
→ Les entrevues se dérouleront entre le 26 et le 30 août 2019.
→ Entrée en poste le 3 septembre 2019.
→ 25 h/semaine à 17,60$/heure.
Le GRIP est un observatoire critique, une pouponnière d’idées et un lieu de diffusion permettant d’envisager le changement social. Composé de quatorze comités, l’organisme offre des informations et des outils à la communauté uqamienne afin de mieux saisir les enjeux qui sont reliés à l’écologie sociale. Notre mission est sur gripuqam.org.
Nous visons à engager 2 personnes dont les compétences seront complémentaires et pourront se développer dans le temps. À compétences égales, une personne étudiant à l’UQAM sera priorisée pour l’embauche.
Les qualifications des candidat.e.s doivent leur permettre de remplir les principales responsabilités définies pour ces postes, à savoir :
●Capacité à travailler de façon constructive dans un collectif horizontal:
– faire preuve d’écoute, d’ouverture, d’empathie et communication non-violente active
– comprendre et supporter les politiques féministes des relations interpersonnelles et des dynamiques de groupe
– avoir conscience des dynamiques de pouvoir liées aux systèmes de domination (racisme, sexisme, etc.) et leurs conséquences dans les relations de groupes
– faire preuve de jugement sur les enjeux qui doivent ou non être soulevés en réunion
– avoir un fort intérêt pour les structures démocratiques non hiérarchiques
– être capable de se remettre en question sur ses pratiques
– prendre en compte l’intérêt du collectif dans ses décisions
●Tenir à jour les budgets, suivis des dépenses, des revenus et autres informations relatives aux comités du GRIP-UQAM, dans le logiciel Sage 50;
●Assurer le paiement des salaires et le respect des obligations fiscales et administratives du GRIP-UQAM;
●Assurer le lien avec les groupes membres du GRIP-UQAM ; traiter les demandes de remboursement et s’assurer avec eux des suivis nécessaires, tel que l’émission de chèque ainsi que la coordination avec les signataires ;
●Assister aux réunions du conseil exécutif et du CA afin de s’assurer des suivis ;
●Coordonner la préparation des états financiers et des audits;
●Colliger et compléter les plans d’action, bilans, rapports et autres documents administratifs en lien avec le financement de l’organisme et les exigences de l’UQAM;
●Communiquer aux instances du GRIP les données à jour sur la situation financière et autres questions qu’elles doivent traiter;
●Organiser les rencontres des diverses instances du GRIP-UQAM, s’assurer de rédiger les convocations, préparer les ordres du jour, trouver des volontaires pour l’animation et la prise de note ;
●Favoriser le rayonnement et le respect des valeurs et des principes du GRIP-UQAM ainsi que ses projets et comités;
●Toutes tâches connexes.
Conditions de travail:
●25 h/semaine à 17,60$/heure.
●Durée de l’emploi : permanent après une période de probation de 1 an, avec augmentation possible du nombre d’heures par semaine;
●3 jours semaine à horaire régulier au bureau du GRIP-UQAM.

+


Pour déposer votre candidature:
Faites parvenir votre C.V. ainsi qu’une lettre de présentation à l’adresse embauche-grip-2019@riseup.net avant le 25 août 2019 à minuit.

+

Les entrevues auront lieu entre le 26 et le 30 août 2019.

+


Le GRIP-UQÀM reconnaît et valorise la contribution des personnes issues ou s’identifiant à des groupes minoritaires et/ou minorisés. Nous encourageons particulièrement les candidatures issues de ces groupes, y compris, mais non limité aux femmes, aux membres de Premières Nations, aux minorités visibles, aux immigrants récents, aux personnes en situation de handicap ou vivant avec une ou des déficiences fonctionnelles, et aux personnes LGBTQ+.

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2019/10/22/assemblee-generale-du-grip-uqam-28-octobre-2019/index.html b/2019/10/22/assemblee-generale-du-grip-uqam-28-octobre-2019/index.html new file mode 100644 index 0000000..907a7b0 --- /dev/null +++ b/2019/10/22/assemblee-generale-du-grip-uqam-28-octobre-2019/index.html @@ -0,0 +1,184 @@ + + + + + + + + + +ASSEMBLÉE GÉNÉRALE du GRIP-UQAM :: 14 novembre 2019 – GRIP-UQÀM + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + + +
+
+ + + +
+ + + + +
+ + + + diff --git a/2020/01/17/semaine-de-reflexion-autour-du-specisme-2020/index.html b/2020/01/17/semaine-de-reflexion-autour-du-specisme-2020/index.html new file mode 100644 index 0000000..2cbb7f3 --- /dev/null +++ b/2020/01/17/semaine-de-reflexion-autour-du-specisme-2020/index.html @@ -0,0 +1,187 @@ + + + + + + + + + +Semaine de réflexion autour du spécisme 2020 – GRIP-UQÀM + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Semaine de réflexion autour du spécisme 2020

+ +
+ +
+ + +

+

Oyez, oyez, CASA présente sa troisième édition de la semaine de réflexions autour du spécisme la semaine prochaine du lundi 20 janvier au vendredi 24 janvier.

Programmation de la semaine :

Lundi 12h45 – 13h45 : Je ne veux pas de votre écologisme (A-1760)
https://www.facebook.com/events/3316778958392707/

Lundi 15h-17h : Faut-il donner de la nourriture végane à ses chats et les empêcher de chasser? (A-2625)
*Événement facebook à créer*

Lundi 18h – 21h : Les animaux domestiques ont-ils droit à la reproduction? (DS-M220)
https://www.facebook.com/events/774500439701613/
__________________________________________

Mardi 12h45 – 13h45 : Des zoos non-humains aux zoos humains (A-1750)
https://www.facebook.com/events/513942012565278/

Mardi 15h – 17h : Film : Carnage (2017) (DE-1560)
https://www.facebook.com/events/1242924456095576/

Mardi 15h – 17h : Dialoguer avec les éléveur-se-s (A-2875)
*Événement facebook à créer*
__________________________________________

Mercredi 12h45 – 13h45 : Pourquoi donner aux sanctuaires n’est probablement pas efficace (A-1750)
https://www.facebook.com/events/2732461056800938/

Mercredi 15h-17h : Jeu de dons : édition cause animale! (A-2780)
https://www.facebook.com/events/772733436561668/

Mercredi 18h – 21h : Spécisme et dissonance cognitive (DS-R510)
https://www.facebook.com/events/868742613580871/
__________________________________________

Jeudi 12h45 – 13h45 : Café-lecture : faut-il s’opposer à la prédation? (A-1760)
https://www.facebook.com/events/2770440249679793/

Jeudi 15h – 17h : Film : The Animal People (2019) (A-2845)
https://www.facebook.com/events/586840218831552/

Jeudi 18h – 21h : L’utilisation des animaux est-elle toujours de l’exploitation? (A-2855)
*Événement facebook à créer* 
__________________________________________

Vendredi 12h45 – 13h45 : Café-lecture : Le freeganisme est-il un véganisme? (A-1760)
https://www.facebook.com/events/467261374219693/

Vendredi 15h – 17h : La place de la violence dans le mouvement animaliste (A-1760)
*Événement facebook à créer*

Vendredi 18h – 21h : Le véganisme au Québec comme mouvement social (A-1760)
https://www.facebook.com/events/1233827936823330/
__________________________________________

Samedi 13h : Marche pour l’Abolition de la Viande (Carré St-Louis)
*Événement facebook à créer*

*Tous ces événements sont accessibles aux personnes à mobilité réduite!

Au plaisir de réfléchir avec vous :)

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/2021/04/13/ag-extraordinaire-grip-uqam-lundi-19-avril-a-18h/index.html b/2021/04/13/ag-extraordinaire-grip-uqam-lundi-19-avril-a-18h/index.html new file mode 100644 index 0000000..c19a39c --- /dev/null +++ b/2021/04/13/ag-extraordinaire-grip-uqam-lundi-19-avril-a-18h/index.html @@ -0,0 +1,194 @@ + + + + + + + + + +AG extraordinaire GRIP-UQAM lundi 19 avril à 18h – GRIP-UQÀM + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

AG extraordinaire GRIP-UQAM lundi 19 avril à 18h

+ +
+ +
+ + +

Conformément aux exigences de l’UQAM, nous devons adopter d’ici la fin avril en assemblée générale les états financiers 2018-2019 qui sont en train d’être finalisés.

+

Nous convoquons donc tous les membres(*) du GRIP-UQAM à une assemblée générale extraordinaire du GRIP-UQAM : le lundi 19 avril à 18h.

+

Ordre du jour non-modifiable de l’assemblée générale extraordinaire :

+
    +
  • 1) Ouverture
  • +
  • 2) Adoption des états financiers 2018-2019
  • +
  • 3) États financiers 2019-2020
  • +
  • 4) Fermeture
  • +
+

Remplissez le formulaire pour participer à l’AG : -> https://gripuqam.org/ag <-

+

(*) Sont membres du GRIP-UQAM :

+

Tout étudiant-e ayant payé sa cotisation au GRIP-UQAM (par la Cotisation Automatique Non-Obligatoire de l’UQAM sans avoir demandé le remboursement de sa cotisation) pour la session en cours est membre étudiant-e de l’organisme. Également, tout étudiant-e ayant payé sa cotisation pour la session d’hiver et n’étant pas inscrit-e à la session d’été est considéré-e membre étudiant-e de l’organisme pendant l’été.

+

Toute personne ayant fait 10 heures de bénévolat au GRIP-UQAM lors de la dernière année.

+

Si l’assemblée ne peut pas avoir lieu faute de quorum, une seconde assemblée générale extraordinaire aura lieu le lundi 26 avril à 18h.

+

-> https://gripuqam.org/ag <-

+ + +
+ + + +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/Assemblée Générale Extraordinaire CANO.png b/Assemblée Générale Extraordinaire CANO.png new file mode 100644 index 0000000..f05aaa7 Binary files /dev/null and b/Assemblée Générale Extraordinaire CANO.png differ diff --git a/CercleAiatshitauMamu/index.html b/CercleAiatshitauMamu/index.html new file mode 100644 index 0000000..04c245e --- /dev/null +++ b/CercleAiatshitauMamu/index.html @@ -0,0 +1,122 @@ + + + + + + + + + +Mouvements Onkwehón:we pour leur souveraineté et la protection des territoires + + + + + + + + + + + + + + +
+ + +
+
+
+ +
+
+

Cercle Aiatshitau Mamu

+
+

+Le Cercle Aiatshitau Mamu (Luttons Ensemble) s’engage à encourager les projets et les luttes menés par des autochtones dont le but est de recourir à une justice sociale. Le montant amassé sera distribué à différents projets par les membres (exclusivement autochtones) du Cercle. +

+Le Cercle Aiatshitau Mamu s'est constitué dans la continuation du projet de l'Alliance Mamo en construction portée par SOS Territoire depuis Mitshetuteuat II (qui se tenait à Wemotaci en septembre 2015) permettant de financer et de lier des luttes en cours des Premiers Peuples. Le GRIP-UQAM supporte et finance son comité SOS Territoire et le Cercle. +

+Les projets pouvant être financés doivent convenir à différents critères. Le montant ne doit pas servir à financer des projets menés par les gouvernements ou ses disciples, les conseils de bande. Il ne devra pas non plus être donné à des projets qui sont déjà financés par un conseil de bande ou tout institut gouvernemental. +

+La moitié du budget annuel devra servir à des projets de protection des terres sacrés de l’Île de la Tortue dirigés par les Premiers Peuples. +

+L’autre moitié du budget annuel devra être dépensée pour des projets de décolonisation / justice sociale / libération juridique pour les Premiers Peuples dirigés par les Premiers Peuples. +

+Un petit montant du budget annuel pourra être versé pour un projet qui n’est pas mené par un/des autochtone/s, mais ayant des objectifs semblables à la protection d’Assi ou la libération des Premiers Peuples. +

+Pour soumettre une demande de financement SVP écrire à Aiatshitau-Mamu@lists.mayfirst.org en incluant : +

    +
  • Comment la demande remplit les objectifs du Cercle.
  • +
  • Une description du collectif (et type de collectif) qui fait la demande et sa place dans la communauté.
  • +
  • Le détail des dépenses à rembourser par catégorie (nourriture, transport, matériel par type, etc.)
  • +
  • Le financement fonctionne par remboursement de factures après avoir fait les dépenses, des images nettes des factures complètes devront être envoyées au GRIP-UQAM avant de recevoir l'argent.
  • +
+

+

Voir aussi la page des mouvements Onkwehón:we pour leur souveraineté et la protection des territoires.

+

+
+ +
+ + +
+ + + + + diff --git a/GRIP-Budget-comites-2024-2025.xlsx b/GRIP-Budget-comites-2024-2025.xlsx new file mode 100644 index 0000000..2aed5e4 Binary files /dev/null and b/GRIP-Budget-comites-2024-2025.xlsx differ diff --git a/Procedure-remboursement.docx b/Procedure-remboursement.docx new file mode 100644 index 0000000..bd0ce69 Binary files /dev/null and b/Procedure-remboursement.docx differ diff --git a/ancienscomites/index.html b/ancienscomites/index.html new file mode 100644 index 0000000..d7cd602 --- /dev/null +++ b/ancienscomites/index.html @@ -0,0 +1,381 @@ + + + + + + + + +GRIP-UQÀM – À la racine des choses + + + + + + + + + + + + + +
+ + +
+
+
+
+
+

Anciens Comités du GRIP-UQAM

+
+
+

Voir la page des comités actifs du GRIP-UQAM.

+

Les collectifs sur cette page ont déjà été des comités du GRIP-UQAM, mais ne sont pas actifs présentement au GRIP-UQAM sous ces noms : +

+

+
+
+
+
+
+

Aliments d’ici

+
+
+

Bannière faite sur le long à l’horizontale présentant des collines. L’ensemble est très vert, il y a quelques arbres (qui sont plus foncés), mais le tout est surtout composé de prés. Au-dessus de la ligne d’horizon, il y a une mince ligne de ciel bleu pâle sans nuage.

+

L’icône d’Aliments d’ici est composé de deux demi-cercles en glitter mauve avec, au centre, les mots Aliments d'ici en orange foncé avec un radis à très longue queue qui souligne d'ici. L’arrière-plan est blanc sauf au centre où il y a un beige clair irrégulier sous les mots et le radis.L’icône d’Aliments d’ici est composé d’un cercle avec, au centre, un arbre fruitier dont le tronc est en forme d’humain, la tête au centre et les bras levés, faisant office de branches. Le tronc-humain est brun. Le feuillage est vert et les fruits sont des ronds orange-rouges sur le feuillage. Le tronc-humain a des racines qui descendent jusqu’au bord du cercle. L’arrière-plan est blanc.Aliments d’ici est un comité de recherche et de mise en pratique d’alternatives pour se nourrir de manière locale, saine et abordable. Nos activités visent le partage de connaissances, la sensibilisation, l’action collective et la solidarité ville-campagne.

+

Aliments d’ici a pour objectif de créer une communauté d’échange de personnes impliquées pour une saine alimentation afin de trouver et mettre en œuvre des solutions pour s’alimenter d’une manière locale, écologique, solidaire, saine, accessible et juste.

+
+ +
+

+
+
+

Alliance Romaine

+
+
+

+

L'Alliance Romaine était un collectif en alliance avec les Premiser Peuples pour la protection de la rivière Romaine, située sur la Côte-Nord, faisant fait face aux projets de barrages hydroélectriques en s'impliquant dans des activités conjointes avec les communautés locales, notamment Innues, ainsi qu'un ensemble d'événements liés au Plan Nord.

+

Faire connaître à Montréal l'opinion des gens de la Côte-Nord opposés aux barrages a été un élément important de nos activités, tout en situant ces barrages dans le contexte du Plan Nord, ce qui permet de comprendre d'autres enjeux qui motivent l'expansion d'Hydro-Québec.

+

Une campagne d'appels « à la pelle » a été lancé visant Hydro-Québec qui a été ponctué d'actions de visibilité pour faire connaître l'appel à l'arrêt des travaux, organisées par le collectif ainsi que par des sympathisant.e.s dans diverses régions du Québec.

+

L'appel a reçu l'appui de plus de 800 signataires provenant de 180 municipalités à travers le Québec. La campagne est à poursuivre dans les mois à venir.

+

Ce comité deviendra le comité Rivières Libres.

+
+
+ +
+
+
+
+
+

Anarchives

+
+
+

Icône d’Anarchives. Il s’agit du mot, écrit sur deux lignes. Sur la ligne du haut, il est écrit “ana” A majuscule, n minuscule et A majuscule. Sur la ligne du bas, il est écrit “rchives” r c h i v e s. Les lettres sont d’un bleu-gris foncé et l’arrière-plan est blanc.Anarchives est un collectif de mémoire militante uqamien, dont le mandat est la conservation, la récolte et la diffusion de matériaux issus de l’histoire passée et présente des mouvements sociaux sur le territoire du Québec. Ainsi, une attention particulière est portée aux mouvements sociaux dont l’enjeu est le territoire québécois lui-même: luttes indépendantistes, écologistes et autochtones. Il s’agit d’une mémoire militante non seulement dans le sens d’une étude des mouvements du passé, mais également de par le regard engagé qui est porté sur les enjeux politiques contemporains.

+

Dans cette perspective, le mandat d’Anarchives est de documenter les enjeux d’écologie sociale qui ont lieu sur le territoire québécois afin de sensibiliser la communauté uqamienne face à ces enjeux. Depuis quelques années, les problématiques liées aux premières nations ont pris de plus en plus de place dans notre travail, du fait de leur importance cruciale par rapport à l’écologie sociale sur le territoire, face auquel les peuples autochtones jouent souvent un rôle de gardien. Ainsi, nous avons développé un large réseau de contacts dans plusieurs nations autochtones du Québec, que nous avons tâché d’inviter à chaque année depuis notre fondation pour des conférences visant la population uqamienne, afin de l’informer de ces enjeux cruciaux.

+

Anarchives s'est intégré en 2022 au comité Stasis.

+
+ +
+

+
+
+

Autarcirque

+
+
+

+

Autarcirque se rassemblait toutes les semaines au Complexe des Sciences afin de pratiquer jongleries et accrobaties ou pour bricoler du matériel de crique fait de matériaux recyclés.

+

Notre comité rassemble des artistes de tous les horizons autour d’une activité hebdomadaire, les rassemblements communautaires de cirque, qui ont lieu depuis 2007 au Complexe des sciences de l'UQAM.

+

Les activités d'Autarcirque visent à expérimenter les principes de l’écologie sociale et de l’autogestion à travers un projet collectif : Tenir ces rassemblements dans l’esprit de l’éducation populaire et produire du matériel de cirque à partir d’objets issus du recyclage (ex. fabriquer des quilles de jonglerie à partir de bouteilles de plastique). Ce projet se situe dans la logique environnementale des 3R (réduction, réutilisation et recyclage des matières).

+

Les rassemblements permettent de discuter d'initiatives tel que : troupe de cirque pour supporter les activités militantes, organisation de cours plus spécifiques et plus poussés (comme le mime).

+
+ +
+
+
+
+

CASA

+
+
+

Nouveau logo de CASA. Il s’agit d’un dessin et de lettres. Au centre se trouve un oiseau dessiné en noir et blanc, tenant dans son aile droite (à la gauche du dessin) une bombe sur laquelle est écrit la lettre A en blanc, dont les extrémités touchent au cercle blanc qui l’entoure. De la bombe sort un pissenlit dont les pétales sont jaunes. L’oiseau a une tête de squelette. À gauche de l’oiseau se trouve la lettre C. À droite du A il y a les lettres S et A, pour former le mot CASA avec la bombe au centre.Icône de CASA de forme carrée. À gauche, on retrouve un dessin en noir et blanc. Au premier plan se trouve une coquille d’escargot de laquelle sort la tête d’un canard. Au deuxième plan se trouve un corps humain à la tête de grenouille. À droit, il est écrit CASA en jaune-orange avec une écriture rappelant un pinceau. Juste en dessous est écrit “collectif antispéciste pour la solidarité animale” en noir et dans une calligraphie rappelant les dactylos. L’arrière-plan est gris, dans un léger dégradé de gauche à droite de pâle à foncé.Le Collectif Antispéciste pour la Solidarité Animale (CASA) se donne pour mission de favoriser la réflexion et l’action pour l’égalité animale dans une perspective multi-systémique fondée sur un idéal d’écologie et de justice sociale. L’antispécisme est une vision du monde basée sur l’autonomie, l’agentivité, le respect de la valeur intrinsèque et le droit fondamental d’exister de tous les individus.es possédant une existence psychologique subjective visant l’abolition des pratiques et institutions causant du tort aux animaux non-humains, pour la seule raison qu’ils ne sont pas humains. Nous dénonçons le double standard moral qui s’opère en fonction de l’appartenance d’espèce, fondé sur le mépris de ce que vivent les individus non-humains.

+

Dans notre lutte pour l’abolition des institutions spécistes, nous ne souhaitons pas tant mettre l’accent sur les pratiques de consommation individuelles que sur les responsabilités de la société dans son ensemble. Ce que nous faisons actuellement subir aux animaux non-humains ne relève ni du choix personnel, ni d’un “ordre naturel” des choses : l’exploitation de tout individu est un enjeu de société et la réponse à apporter doit être collective.

+

Nous refusons l’instrumentalisation, le mépris et l’invisibilisation des luttes humaines dans notre combat pour la prise en compte des intérêts des animaux non-humains. Nous souhaitons contribuer à l’avènement d’un mouvement de luttes progressistes solidaire et non-spéciste.

+

CASA se distingue de groupes tels que l’AVUQAM par son approche qui place les animaux résolument au point focal de sa réflexion et de son action. CASA se distingue par ailleurs du Comité de reconnaissance des droits des animaux par son approche multidisciplinaire et son engagement envers l’éducation populaire dans le domaine de l’antispécisme.

+

Nous avons décidé de fonder CASA pour répondre à un besoin d’implication communautaire et citoyenne pour les personnes étudiant à l’UQAM. En effet, avant la formation de CASA, il n’y avait pas, à l’UQAM, de groupe permettant aux personnes étudiantes qui n’ont pas de formation ou d’affinité pour le Droit, de s’impliquer pour la cause de la libération animale.

+

– Objectifs interpersonnels: adopter des croyances fondées sur l’égale dignité des humains et des êtres animaux et encourager le développement d’une attitude critique et une sensibilité aux enjeux de pouvoirs, d’oppressions, d’émancipations et de participations à la négociation sur le bien public.
+– Objectifs personnels: valoriser et cultiver l’identité antispéciste.
+– Objectifs relationnels: développer des réseaux de soutien social et créer des alliances avec les autres luttes de justice sociale.
+– Objectifs publics: développer et diffuser la connaissance sur les mécanismes de maintien de l’oppression spéciste.

+

Toute personne intéressée par les enjeux d’égalité et de justice sociales au-delà du critère arbitraire de l’espèce est invitée à nous rejoindre.

+

Comité du GRIP-UQAM depuis l'assemblée générale du 29 mars 2017.

+
+ +
+
+
+
+

CÉTACÉ

+
+
+

Collectif Étudiant en Transformation Alimentaire Communautaire et Écologique

+

Icône du CÉTACÉ. En haut, il est écrit CÉTACÉ. Un dessin en couleurs montre en dessous une baleine coiffée d’un chapeau de cuisinier. Dans sa nageoire droite, elle tient une cuillère de cuisine. La baleine est bleu foncé. Son ventre, le chapeau et la cuillère sont d’un blanc cassé. Tout en bas, il est écrit “Collectif Étudiant en Transformation Alimentaire Communautaire et Écologique”. L’arrière-plan est blanc.Le CÉTACÉ a pour mission de favoriser une alimentation locale et écologique saine, solidaire et juste et l'ouverture d'une cuisine collective à l'UQAM.

+

 

+

Sa mission: +

    +
  • Rendre possible l’accès à un espace adapté où cuisiner de façon autonome et sécuritaire à l’université.
  • +
  • Mettre en valeur les connaissances et compétences des étudiantes et étudiants sur la question de l'alimentation saine et abordable.
  • +
  • Améliorer la sécurité, l'autonomie et la santé alimentaire au sein de la communauté étudiante uqamienne.
  • +
+

+
+ +
+
+
+
+

Comité Anti-Capitaliste (CAC-UQAM)

+
+
+

+

Groupe visant à développer et à diffuser des idées anti-capitalistes, sous forme de cercles de lectures, de débats, de conférences ou encore en encourageant la participation lors d'événements en rupture avec la capitalisme.

+
+ +
+
+
+
+

Comité Cinéma documentaire engagé

+
+
+

+

Comité ayant pour mission de financer la production de documentaires étudiants en lien avec la mission du GRIP ainsi que de les promouvoir et les diffuser.

+
+
+ +
+
+
+
+
+

Comité Journal L'Intérêt Public

+
+
+

+

Tribune engagée du GRIP, créé à l'automne 2009 du désir des étudiant-e-s engagé-e-s des divers comités du GRIP de coucher sur papier leurs visions critiques, poétiques et révolutionnaires de plusieurs sujets d'intérêt public, le journal L'Intérêt Public regroupe des articles théoriques, pratiques ou même anecdotiques et d'opinion rédigés par autant de membres du GRIP que par des sympathisants aux problématiques étroitement liées aux activités du GRIP-UQAM.

+

Le comité travaille principalement sur la mise en page du journal et l'organisation de soirées thématiques (lancement-discussion) liées aux sujets abordés dans les pages de L'Intérêt Public.

+
+ +
+
+
+
+

Groupe d'achat bio

+
+
+

+

Vise à offrir aux étudiant-e-s de l'UQAM la possibilité de s'approvisionner en produits biologiques et naturels à moindre coûts, d'avoir accès à une grande diversité de produits transformés et non-transformés le tout ici même à l'UQAM.

+
+
+ +
+
+
+
+
+

La Riposte Féministe, collectif de luttes pour les autonomies corporelles

+
+
+

Bannière de la Riposte féministe, très colorée. À l’avant-plan vers la gauche se trouve un essaim de guêpes à têtes noires volant vers un immeuble plus loin à droite. Cet immeuble est vert avec des toits en pignons fuchsia, avec une grande tour centrale munie d’une horloge. On peut voir des nuages roses remplissant le ciel à droite de l’immeuble. Au-dessus de l’essaim d’abeilles est écrit “RIPOSTE FÉMINISTE” en fuchsia et “FEMINIST RESPONSE” en bleu, sur fond vert pâle. En arrière-plan derrière l’essaim se trouvent les silhouettes de gratte-ciels bleus à l’avant, puis mauves, fuchsias et rose plus en arrière.

+

Icône de la Riposte féministe de forme carrée. L’arrière-plan est majoritairement jaune et montre un coucher de soleil sur des silhouettes de dizaines de gratte-ciels. Le ciel est jaune, le soleil est blanc et les gratte-ciels sont rouges foncés à l’avant, puis orange et jaune-orange vers l’arrière. À l’avant-plan se trouve une guêpe jaune et noir en haut à gauche. En bas à droite est écrit en noir “LA RIPOSTE FÉMINISTE”, chacun des mots sur une nouvelle ligne, enligné à droite, remplissant ce coin.La Riposte Féministe, collectif de luttes pour les autonomies corporelles, vise à se baser sur le vécu des personnes et des communautés dans sa lutte contre les multiples formes d’oppression afin de créer des solidarités permettant l’auto-détermination et le développement d’un pouvoir d’agir individuel et collectif.

+

Notre mission est de créer des outils de luttes pour les autonomies corporelles, de deux manières :
+– Ouvrir des espaces de prise de parole pour l’expression d’expériences particulières de l’oppression dans une perspective d’empowerment individuelle et collective.
+– Discuter de l’idée des autonomies corporelles comme outil de lutte contre les diverses formes de domination dans une approche intersectionnelle.

+

Comité du GRIP-UQAM depuis l'assemblée générale du 29 mars 2017.

+
+
+ +
+
+
+
+
+

Mad Pride/Fierté Folle

+
+
+

Icône de forme rectangulaire, sur fond noir, avec un signe d’infini (huit à l’horizontal) qui passe en dégradé à travers toutes les couleurs de l’arc-en-ciel.Un comité par et pour les personnes neurodiverses et neuroatypiques.

+

L’écologie sociale devrait être festive et inclusive, pas capacitiste.

+
+
+ +
+
+
+
+
+

Rivières Libres

+
+
+

+

Rivières Libres est un regroupement qui oeuvre pour la protection des rivières.

+

Nos projets visent à documenter, sensibiliser et agir pour promouvoir les alternatives énergétiques et économiques dans les régions où des barrages se construisent.

+

Parmi les activités prévues, des séminaires et conférences sur les enjeux entourant l'hydro-électricité, le Plan Nord, les peuples autochtones, des expéditions sur des rivières, suivies d'expo-photo et de documentaires ainsi que du théâtre de rue, de la musique, des flashmobs et manifestations.

+

Campagne pour l'arrêt des travaux sur la rivière Romaine : www.romaine-appel.org

+

Pour donner un coup de main, autant sur les volets artistique, programme, diffusion, logistique, etc. des rencontres ont lieu régulièrement. Écrivez-nous : riviereslibres@riseup.net

+

Ce comité deviendra le comité SOS Territoire.

+
+
+ +
+
+
+
+
+

Solidarité sans frontières

+
+
+

Bannière de Solidarité sans frontières. Au centre en bas est écrit sur fond blanc “CITÉ SANS FRONTIÈRES”, puis en dessous “SOLIDARITY CITY” d’une typographie ondulante. De chaque côté du rectangle blanc se trouvent des poings blancs avec contours noirs levés, de style infographique. Au-dessus des mains se trouve une banderole de manif bleu où il est écrit “UN STATUT POUR TOUTES ET TOUS” et en dessous “STATUS FOR ALL” suivi de “PAPELES PARA TODAS Y TODOS.” En dessous de la bannière, en arrière-plan des mains, se trouvent des immeubles de différentes couleurs (vert olive, lilas, jaune pâle) et avec des fenêtres blanches, sur lesquels se trouvent des affiches avec divers écriteaux, notamment: “No deportations”, “Non aux détentions”, “Non à la double peine” et “Arrêtons les déportations”. Le ciel est rouge vin.

+

Dessin de Solidarité sans frontières, en noir et blanc. Il s’agit d’un poing levé tenant et tirant vers le bas un fil barbelé. Les extrémités du barbelé se trouvent aux deux bouts d’un ruban où il est écrit en calligraphie “justice & dignité”. En bas du poing se trouve une banderole où il est écrit en gros à gauche “SOLIDARITÉ” et en plus petit à droite en haut “Sans Frontières” et en bas “Across Borders”.Icône de Solidarité sans frontières de forme ronde. Le fond est blanc et tout le reste est rouge. Longeant la forme du cercle est écrit en haut “PAS UNE SEULE DÉPORTATION DE PLUS !” et, longeant la forme du cercle en bas est écrit “NOT ONE MORE DEPORTATION!”, puis, plus bas, l’adresse du site web “www.solidaritesansfrontieres.org”. Au centre du cercle se trouve un dessin de six bras se tiennent les uns les autres au poignet, en cercle. Au centre se trouve un dessin d’avion, autour duquel se tiennent au moins cinq personnes qui se tiennent par les mains.Solidarité sans frontières est un réseau impliqué dans les luttes immigrantes. Nos revendications principales sont : la fin des détentions, des déportations et l’opposition à la double peine.

+
+ +
+
+
+
+
+
+ +
+ + diff --git a/apropos/index.html b/apropos/index.html new file mode 100644 index 0000000..ca2fd48 --- /dev/null +++ b/apropos/index.html @@ -0,0 +1,179 @@ + + + + + + + + + +À Propos – GRIP-UQÀM + + + + + + + + + + + + + + + + +
+ + +
+
+
+
+
+

À Propos

+
+
+

Le Groupe de Recherche d’Intérêt Public du Québec à l’Université du Québec à Montréal (GRIP-UQAM) réunit des personnes de la communauté étudiante uqamienne souhaitant agir de façon équitable en visant le très long terme pour le bien-être social et écologique des collectivités présentes et futures dans une perspective anticoloniale.

+

En anglais, on traduit GRIP-UQAM par QPIRG-UQAM, où QPIRG signifie Québec Public Interest Research Group.

+

+

+

+

Description

+

Afin de réaliser sa mission, le GRIP-UQAM rassemble une convergence d’initiatives locales, collectives et environnementales axées sur la démocratie directe, la coopération et la libération des différentes formes d’oppressions.

+

Le GRIP-UQAM appuie activement les différentes luttes écologiques et de décolonisation des peuples autochtones pour mettre un terme à l’entreprise coloniale génocidaire et écocidaire sur les terres autochtones illégalement et illégitimement occupées.

+

De plus, le GRIP-UQAM soutient :

+
    +
  • Des actions concrètes et contraignantes respectueuses des vécus et des besoins des premiers peuples pour contrer dès aujourd’hui les changements climatiques pour les générations futures.
  • +
  • Personne n’est illégal, un statut pour toutes les personnes sans exception.
  • +
  • Des aliments sains, locaux et accessibles.
  • +
  • L’équité entre les personnes à travers des féminismes intersectionnels, inclusifs et collectifs qui confrontent le patriarcat.
  • +
  • La déconstruction et les luttes contre la suprématie blanche et le racisme.
  • +
  • Du respect et des droits pour la nature et tous les êtres vivants.
  • +
  • Une société réellement écologique et libre du capacitisme et des oppressions.
  • +
+

Mission

+

Par, pour et avec la communauté uqamienne, le GRIP réfléchit sur les enjeux socio-écologiques qui touchent directement et indirectement tous les individus et toutes les sociétés présentes et futures.

+

Devant les défis posés par la crise écologique (changements climatiques, perte de biodiversité, rupture des mécanismes naturels de régulations, etc.) due à l’activité humaine, le GRIP travaille, recherche et s’appuie sur des modèles politico-économiques alternatifs, existants et à construire, fondés sur le développement d’initiatives locales, communautaires et écologiques axées sur la démocratie participative, la coopération et le partage des connaissances et des ressources.

+

En remettant en question le productivisme, la croissance économique illimitée ainsi que la culture économiciste dominante, le GRIP réinterprète et réaffirme l’interdépendance des humains entre eux et elles (entraide et solidarité) et entre les humains et les écosystèmes (l’humanité dans la nature).

+

Engagé dans une réappropriation critique de l’espace physique, culturel et symbolique, grâce à la sensibilisation, la concertation, la transdisciplinarité et la mise en relation des partenaires intra et extra uqamiens dans un but d’autonomie collective, sa mission est d’encourager, dans la communauté, le sentiment d’appartenance au projet d’une société écologique et conviviale.

+

Objectifs

+

Les objectifs généraux de l’organisme sont:

+
    +
  1. de faciliter le progrès social en encourageant les individus, en particulier les étudiant-e-s, à assumer leur rôle de citoyen-ne, leurs droits et leurs responsabilités;
  2. +
  3. de donner aux étudiant-e-s les moyens de valoriser leurs travaux et leurs recherches en actions sociales positives, d’acquérir des expériences pratiques et enrichissantes ainsi que de mettre les ressources universitaires au profit de la communauté dans son ensemble;
  4. +
  5. d’affronter les problèmes sociaux et écologiques par la réalisation de projets étudiants sur des thèmes d’intérêt public; 
  6. +
  7. de favoriser la participation étudiante aux débats publics, aux actions communautaires et aux réformes réglementaires ou législatives;
  8. +
  9. de promouvoir la participation active du plus grand nombre d’étudiant-e-s dans les projets et décisions de l’organisme;
  10. +
  11. de travailler en partenariat avec les membres de la communauté uqamienne, les autres GRIP du Québec et la communauté extérieure; 
  12. +
  13. de recevoir des dons, legs et autres contributions de même nature en argent, en valeurs mobilières ou immobilières; d’administrer ces dons, legs et contributions; d’organiser des campagnes de souscriptions dans le but de recueillir des fonds pour les besoins de l’organisme; et
  14. +
  15. de faire tout ce qui est pertinent et nécessaire à la promotion et à la réalisation de ces objectifs.
  16. +
+

Principe Anticolonial

+

Le GRIP-UQAM reconnaît être situé sur des terres autochtones illégalement et illégitimement occupées. Il se veut en rupture avec une histoire coloniale génocidaire qui se perpétue encore aujourd’hui sous différentes formes. En tant que groupe écologiste, il est aussi conscient que l’expansion coloniale est à la base de l’écocide planétaire. Se faisant, le GRIP-UQAM appuie activement les différentes luttes de décolonisation des peuples autochtones et les autres luttes anticoloniales qui leur sont solidaires. Le GRIP-UQAM s’engage également à promouvoir des analyses et des pratiques de décolonisation et anticoloniales à l’interne de son organisation, à l’externe et dans les instances et événements auxquel-le-s il participe.

+

Principe Antiraciste

+

Le GRIP-UQAM reconnaît que le colonialisme s’inscrit dans le contexte d’une civilisation basée sur la suprématie blanche. Se faisant, le GRIP-UQAM appuie activement les différentes luttes contre le racisme. Le GRIP-UQAM s’engage également à promouvoir des analyses et des pratiques contre la suprématie blanche et antiracistes en général, à l’interne de son organisation, comme à l’externe et dans les instances et événements auxquel-le-s il participe.

+

Principe d’Intersectionnalité

+

Le GRIP-UQAM est conscient d’exister dans une société hiérarchisée selon des rapports de domination et d’oppression, notamment raciste, cissexiste, hétéro-patriarcale, transphobe, capacististe, capitaliste et coloniale qui perpétue les inégalités, les discriminations ainsi que des oppressions qui peuvent toucher chaque personne, mais qui ont des effets disproportionnés et intensément violents contre (sans être exhaustif) les femmes, les autochtones, les personnes racialisé-e-s, les personnes non-binaires, non-conformes dans le genre, la sexualité ou l’asexualité, les capacités ou d’autres façons plus ou moins visibles, les classes sociales moins nanties, moins favorisées ou moins représentées, etc. Les sous-ensembles de la société sont eux-mêmes hiérarchisés selon des rapports similaires. Les situations d’oppressions multiples que vivent une même personne se cumulent et se renforcent entre elles de sorte que l’intersectionnalité résultante est plus accablante que la somme des oppressions prises séparément. Un projet de lutte contre toutes les oppressions n’est pas nécessairement sensible aux personnes qui vivent plusieurs oppressions à moins d’être spécifiquement engagé à porter une attention particulière à ces personnes. Le GRIP-UQAM considère que son projet de société écologique, équitable, intersectionnel et convivial est impossible à réaliser sans un rejet de toutes les hiérarchies incluant celles qui existent à l’intérieur même des mouvements de luttes contre les hiérarchies et sans une lutte incessante contre les différentes oppressions qui ne sont pas limitées à celles nommées dans ce texte.

+

Principe Féministe

+

Le GRIP-UQAM appuie activement les différentes luttes pour l’équité entre les personnes à travers des féminismes intersectionnels inclusifs et collectifs qui ne se limitent pas à défendre un droit individuel (libéral). Il s’engage donc à promouvoir les luttes ainsi qu’à soutenir des analyses et des pratiques anti-patriarcales à l’interne de son organisation comme à l’externe des autres instances et événements auxquel-le-s il participe. Aucune attitude ni propos antiféministe ou masculiniste ne seront tolérés. Nous luttons sans relâche contre les pratiques et idéologies antiféministes et masculinistes faisant partie du patriarcat que nous combattons.

+

Voir aussi les comités du GRIP-UQAM et les questions-réponses.

+ + +
+ +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/category/emploi/index.html b/category/emploi/index.html new file mode 100644 index 0000000..682ed6f --- /dev/null +++ b/category/emploi/index.html @@ -0,0 +1,301 @@ + + + + + + + + + +Emploi – GRIP-UQÀM + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + + +
+ + +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+
+ + + +
+ + + + +
+ + + + diff --git a/category/evenements/index.html b/category/evenements/index.html new file mode 100644 index 0000000..e8522fe --- /dev/null +++ b/category/evenements/index.html @@ -0,0 +1,215 @@ + + + + + + + + + +Événements – GRIP-UQÀM + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + + +
+ + +
+ + + +
+ +
+ + + +
+ +
+ + + +
+
+ + + +
+ + + + +
+ + + + diff --git a/category/nonclassee/index.html b/category/nonclassee/index.html new file mode 100644 index 0000000..fcaa081 --- /dev/null +++ b/category/nonclassee/index.html @@ -0,0 +1,460 @@ + + + + + + + + + +Non-classée – GRIP-UQÀM + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + + +
+ + +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + + +
+
+ + + +
+ + + + +
+ + + + diff --git a/category/nonclassee/page/2/index.html b/category/nonclassee/page/2/index.html new file mode 100644 index 0000000..d325157 --- /dev/null +++ b/category/nonclassee/page/2/index.html @@ -0,0 +1,458 @@ + + + + + + + + + +Non-classée – Page 2 – GRIP-UQÀM + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + + +
+ + +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + + +
+
+ + + +
+ + + + +
+ + + + diff --git a/category/nonclassee/page/3/index.html b/category/nonclassee/page/3/index.html new file mode 100644 index 0000000..ca94e47 --- /dev/null +++ b/category/nonclassee/page/3/index.html @@ -0,0 +1,435 @@ + + + + + + + + + +Non-classée – Page 3 – GRIP-UQÀM + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + + +
+ + +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + + +
+
+ + + +
+ + + + +
+ + + + diff --git a/category/nonclassee/page/4/index.html b/category/nonclassee/page/4/index.html new file mode 100644 index 0000000..f5f954b --- /dev/null +++ b/category/nonclassee/page/4/index.html @@ -0,0 +1,436 @@ + + + + + + + + + +Non-classée – Page 4 – GRIP-UQÀM + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + + +
+ + +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + + +
+
+ + + +
+ + + + +
+ + + + diff --git a/category/nonclassee/page/5/index.html b/category/nonclassee/page/5/index.html new file mode 100644 index 0000000..a957fda --- /dev/null +++ b/category/nonclassee/page/5/index.html @@ -0,0 +1,436 @@ + + + + + + + + + +Non-classée – Page 5 – GRIP-UQÀM + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + + +
+ + +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + + +
+
+ + + +
+ + + + +
+ + + + diff --git a/category/nonclassee/page/6/index.html b/category/nonclassee/page/6/index.html new file mode 100644 index 0000000..cc0cafa --- /dev/null +++ b/category/nonclassee/page/6/index.html @@ -0,0 +1,435 @@ + + + + + + + + + +Non-classée – Page 6 – GRIP-UQÀM + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + + +
+ + +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + + +
+
+ + + +
+ + + + +
+ + + + diff --git a/category/nonclassee/page/7/index.html b/category/nonclassee/page/7/index.html new file mode 100644 index 0000000..ded5d63 --- /dev/null +++ b/category/nonclassee/page/7/index.html @@ -0,0 +1,434 @@ + + + + + + + + + +Non-classée – Page 7 – GRIP-UQÀM + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + + +
+ + +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + + +
+
+ + + +
+ + + + +
+ + + + diff --git a/category/nonclassee/page/8/index.html b/category/nonclassee/page/8/index.html new file mode 100644 index 0000000..be764b7 --- /dev/null +++ b/category/nonclassee/page/8/index.html @@ -0,0 +1,379 @@ + + + + + + + + + +Non-classée – Page 8 – GRIP-UQÀM + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + + +
+ + +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + + +
+
+ + + +
+ + + + +
+ + + + diff --git a/category/nouvelles/index.html b/category/nouvelles/index.html new file mode 100644 index 0000000..c11651e --- /dev/null +++ b/category/nouvelles/index.html @@ -0,0 +1,454 @@ + + + + + + + + + +Nouvelles – GRIP-UQÀM + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + + +
+ + +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + + +
+
+ + + +
+ + + + +
+ + + + diff --git a/category/nouvelles/page/2/index.html b/category/nouvelles/page/2/index.html new file mode 100644 index 0000000..89a92db --- /dev/null +++ b/category/nouvelles/page/2/index.html @@ -0,0 +1,431 @@ + + + + + + + + + +Nouvelles – Page 2 – GRIP-UQÀM + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + + +
+ + +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + + +
+
+ + + +
+ + + + +
+ + + + diff --git a/category/nouvelles/page/3/index.html b/category/nouvelles/page/3/index.html new file mode 100644 index 0000000..d1b7150 --- /dev/null +++ b/category/nouvelles/page/3/index.html @@ -0,0 +1,274 @@ + + + + + + + + + +Nouvelles – Page 3 – GRIP-UQÀM + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + + +
+ + +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + + +
+
+ + + +
+ + + + +
+ + + + diff --git a/comites/alimentsdici-logo-nouveau.jpg b/comites/alimentsdici-logo-nouveau.jpg new file mode 100644 index 0000000..dee12f2 Binary files /dev/null and b/comites/alimentsdici-logo-nouveau.jpg differ diff --git a/comites/index.html b/comites/index.html new file mode 100644 index 0000000..c3c6a3c --- /dev/null +++ b/comites/index.html @@ -0,0 +1,319 @@ + + + + + + + + + +GRIP-UQÀM – À la racine des choses + + + + + + + + + + + + + +
+ + +
+
+
+
+
+

Assemblée générale extraordinaire d'augmentation CANO 4 avril 2023 à 12h30 au R-M110 et en ligne sur jitsi

+
+
+

Le GRIP-UQAM tiendra une assemblée générale extraordinaire le mardi 4 avril* à 12h30 au R-M110 pour augmenter la cotisation automatique non-obligatoire (CANO) du GRIP-UQAM de 25%, soit passer de 2$ (montant actuel depuis que le GRIP-UQAM a obtenu la CANO en septembre 2012 et jamais augmenté depuis les 11 dernières années) à 2,50$ (nouveau montant proposé qui entrerait en effet pour le trimestre d'automne 2023). (événement facebook)

+

Voir l'ordre du jour non-modifiable de l'assembée générale extraordinaire.

+

L'AG extraordinaire aura lieu à l'UQAM et en ligne sur jitsi : https://gripuqam.org/AG

+

Conformément à la politique 51 le quorum de l'AG d'augmentation de CANO est de 100 personnes étudiant à l'UQAM.

+

Cette hausse après tant d'années permettra notamment de recommencer à avoir des activités beaucoup plus fréquentes, de financiers les activités renouvelées de nos comités, de payer à nos employé-e-s des salaires décents, de faire des séries d'activités à chaque rentrée et de financer les projets que vous souhaitez lancer par rapport à l'écologie sociale et les sociétés écologiques.

+

* Reconductible le mercredi 5 avril** à 17h.

+

** Reconductible le jeudi 6 avril 2023 à 12h30.

+
+ +
+
+
+

Aliments d’ici

+
+
+

Bannière faite sur le long à l’horizontale présentant des collines. L’ensemble est très vert, il y a quelques arbres (qui sont plus foncés), mais le tout est surtout composé de prés. Au-dessus de la ligne d’horizon, il y a une mince ligne de ciel bleu pâle sans nuage.

+

L’icône d’Aliments d’ici est composé de deux demi-cercles en glitter mauve avec, au centre, les mots Aliments d'ici en orange foncé avec un radis à très longue queue qui souligne d'ici. L’arrière-plan est blanc sauf au centre où il y a un beige clair irrégulier sous les mots et le radis.L’icône d’Aliments d’ici est composé d’un cercle avec, au centre, un arbre fruitier dont le tronc est en forme d’humain, la tête au centre et les bras levés, faisant office de branches. Le tronc-humain est brun. Le feuillage est vert et les fruits sont des ronds orange-rouges sur le feuillage. Le tronc-humain a des racines qui descendent jusqu’au bord du cercle. L’arrière-plan est blanc.Aliments d’ici est un comité de recherche et de mise en pratique d’alternatives pour se nourrir de manière locale, saine et abordable. Nos activités visent le partage de connaissances, la sensibilisation, l’action collective et la solidarité ville-campagne.

+

Aliments d’ici a pour objectif de créer une communauté d’échange de personnes impliquées pour une saine alimentation afin de trouver et mettre en œuvre des solutions pour s’alimenter d’une manière locale, écologique, solidaire, saine, accessible et juste.

+
+ +
+

+
+
+

Centre Social L'Achoppe

+
+
+

Bannière du CELLUL. La teinte globale est violette. À l’avant-plan est écrit “CELLUL” en lettres majuscules blanches. Derrière se trouve un immeuble abandonné couvert de graffitis, aux teintes violettes. En haut sur le ciel se trouve écrit “COLLECTIF ÉTUDIANT DE LUTTE POUR DES LIEUX URBAINS LIBÉRÉS” en lettres majuscules violettes huit fois plus petites que le mot “CELLUL” à l’avant-plan.

+

Icône du CELLUL. Il s’agit d’un dessin, majoritairement en noir et blanc. Au centre se trouve une cellule (biologique) verte dont le noyau au centre est blanc entouré de noir avec beaucoup de points noirs. Des immeubles très élevés surgissent de la cellule, de chaque côté, trois à gauche et trois à droite, s’éloignant du centre. Au centre sur la cellule se tient un humain vêtu de noir et brandissant un drapeau noir sur lequel est écrit “CELLUL”. L’arrière-plan est blanc.Icône du CELLUL de forme carrée. La teinte globale est violette. L’image montre une ouverture irrégulière dans le coin en bas et à gauche d’un grillage de fil de fer. Il y a un rayon de lumière au-delà du grillage en haut et à gauche. À l’avant-plan est écrit CELLUL en blanc, avec une forme elliptique.Le Centre Social l'Achoppe, anciennement le Collectif étudiant de lutte pour des lieux urbains libérés (CELLUL) entend lutter contre la marchandisation de l’espace public, la gentrification des quartiers, la bétonisation de la ville ainsi que la dérive sécuritaire et la surveillance de nos milieux.

+
+ +
+
+
+
+
+

Coordination

+
+
+

Bannière du GRIP‑UQAM. Elle est orange. Les écritures et dessins dessus sont blancs. D’abord, à gauche et en gros se lit “GRIP‑UQAM”, puis en plus petit à droite “Groupe de Recherche d’Intérêt Public de l’UQAM”. Enfin, au bout à droite se trouve le logo du GRIP, sur fond jaune-orange. Le logo montre la silhouette d’un pissenlit en fleur, avec un feuillage garni avec “GRIP” écrit juste en dessous, d’une écriture de type manuscrite.

+

Logo du GRIP‑UQAM fêtant les 25 ans de l’organisme. Le logo est entièrement blanc. L’écriture est transparente (le fond d’écran est noir). Il s’agit de la silhouette d’un pissenlit en fleur. Ce dernier est planté dans un rond contenant des écritures. Dans le rond se lit “GRIP‑UQAM” au centre et “25 ans” longeant la paroi en bas à droite du cercle. En haut à gauche, à l’extérieur du cercle et en blanc, est écrit “écologie sociale” d’une écriture type manuscrite attachée plutôt ronde. Deux racines dépassent du cercle en bas à gauche et la fleur et une feuille dépassent en haut à droite.Logo du GRIP‑UQAM de forme carrée. Au centre se trouve une silhouette de pissenlit en fleur de couleur vert lime. Au-dessus est du pissenlit est écrit en vert foncé entouré de vert lime: “À la racine des choses” suivi de quatre points de suspension. Des racines de pissenlit sont en arrière-plan de ces mots, dans le coin haut gauche du carré. À droite, écrit à la verticale et en orange se lit l’adresse du site du GRIP, soit “gripuqam.org”. En bas de la fleur, il y a une forme orange presque rectangulaire, comme si elle y était plantée. Il y est écrit “GRIP UQAM” et la tige du pissenlit sort du “i” de GRIP. Tout en bas est écrit en petit “Groupe de Recherche en Intérêt Public de l’UQAM”. L’arrière-plan est transparent (le fond d’écran est noir).Composée de l’équipe des personnes à la co-coordination, du conseil exécutif, du conseil d’administration et des autres personnes qui souhaitent s’y impliquer, la coordination s’occupe des affaires courantes du GRIP, assure une communication avec et entre les comités et organisent des activités d’intérêt général.

+

Joignez-nous ! Écrivez-nous !

+
+ +
+

+
+
+
+

Éducation populaire

+
+
+

Photo en noir et blanc de restes de tiges de pissenlits avec les graines envolées. L’arrière-plan est très lumineux, rendant les pissenlits visibles sous forme de silhouettes noires et un horizon foncé en bas. Le focus est fait sur deux plants de pissenlit au centre avec d’autres plants flous en arrière. Il y aussi un dégradé vers le noir, plus on s’approche du pourtour de l’image.Le comité Éducation populaire organise des « teach-in’s » (journée d’ateliers, podcasts, conférences et discussions) et une banque d’ateliers anticapitalistes pour rassembler et renforcer les différents groupes et mouvement anticapitalistes de Montréal, dans une perspective d’éducation populaire.

+
+ +
+

+
+
+

Médi@s Libres

+
+
+

Image du site infos.media, écrit en blanc en haut. Plus bas est écrit “Intégrateur de médias indépendants”. L’arrière-plan est majoritairement noir, avec des effets de lumières flous.

+

Icône de Médias Libres de forme carrée. Le fond est rouge. À l’avant-plan, il y a un porte-voix en blanc avec contours noirs dont sort une bulle de dialogue dans laquelle est écrit “Médi@s Libres” en noir, épelé avec un “a” commercial. Sous le porte-voix est écrit “Collectif médiatique d’autodéfense communicationnelle et d’intervention sociale”.Médias Libres est un collectif de médias alternatifs qui vise à promouvoir des discours médiatiques alternatifs. Nous travaillons tant à la production, qu’à la diffusion de projets médiatiques porteurs d’une perspective originale et critique. Nous oeuvrons également au réseautage des médias indépendants. Notre démarche est inclusive et nous croyons à l’échange de connaissances et à l’horizontalité des rapports interpersonnels.

+

Icône de Projections Insurgées, de forme ronde. À l’intérieur d’un cercle noir rempli de blanc se trouve un corbeau, aux plumes noir-bleuté avec éclats jaunes sur ses ailes déployées, vêtu d’un habit bleu avec un harnais et muni d’une lampe de projection cinématographique frontale. À l’avant-plan est écrit en rose “P I”.Activités:

+
    +
  • Projections insurgées! Soirées de diffusion de films radicaux;
  • +
  • Développement du portail INFOS.media rassemblant a une seule adresse une constellations de médias d’information indépendants;
  • +
  • Fonds discrétionnaire d’aide aux médias indépendants;
  • +
  • Productions audiovisuelles, ateliers cinématographiques, ciné-débats et bien plus!
  • +
+
+ +
+

+
+
+

PASC

+
+
+

Bannière du PASC. À l’avant-plan est écrit en blanc “Projet Accompagnement Solidarité Colombie”. L’arrière-plan montre un dégradé entre trois images. À gauche se trouve quelqu’un debout pagayant une embarcation avec des contenants bleus. Au centre se trouve une forêt aux arbres épars. À droite se trouve une manifestation du 1er mai avec des gens tenant une pancarte en espagnol dont la majorité est cachée par le mot “Colombie” à l’avant-plan.

+

Icône du PASC de forme rectangulaire. À l’avant-plan est écrit “PASC” dans une typographie de type dactylo. Au centre en arrière-plan se trouve la silhouette grise du territoire de la Colombie. Celui-ci est entouré d’un cercle, lequel sert de pupille à l’image globale d’œil formée avec les écrits en courbe en haut et en bas. En haut est écrit “Pour la défense de la vie, la dignité et l’autonomie”. En bas est écrit “Projet accompagnement solidarité Colombie”. En arrière-plan, à gauche, se trouve un dessin en silhouette de la face d’une personne avec moustache portant un sombrero, puis, à droite, se trouve un dessin en silhouette d’une personne en robe dansant, une main sur la hanche et l’autre dans les airs.Le PASC est un collectif anticolonial et féministe basé au « Québec » qui réalise de l’accompagnement auprès de communautés et organisations colombiennes, tout en dénonçant les intérêts canadiens impliqués dans le conflit social et armé en Colombie. Nous faisons des liens entre des luttes ici et là-bas contre l’imposition de projets d’extraction des ressources.

+
+ +
+

+
+
+

SOS Territoire

+
+
+

Logo de SOS Territoire: Dessins en blanc sur arrière-plan noir. Un SOS sur des vagues avec la prolongation de la base du premier S vers sa gauche formant une butte d’où jaillissent deux arbres conifères, un plus petit à gauche et un plus grand à droite. Sous l’eau il est écrit “Territoire”. Les deux S de SOS sont plus hauts que le O qui est parfaitement rond.Toile peinte par l’artiste atikamekw Jacques Newashish lors de Mitshetuteuat II pour l’Alliance Mamo. Chi Miigwetch Monsieur Newashish ! La peinture montre trois longues perches en noir attachées ensemble dont la plus haute au centre se termine par un drapeau rouge avec un cercle séparé en quatre couleurs, dans le sens horaire à partir du coin bas droit : rouge, noir, blanc jaune. Derrière les perches il y a trois bandes, une grande bande jaune en haut, puis une bande bleue marqué de traits diagonaux blancs et noirs, puis une mince bande jaune tout en bas avec des silhouettes en noir tout d’abord humaines, soit une petite personne, puis une minuscule personne qui tient la main d’une personne portant une jupe, une autre personne sans jupe, puis deux silhouettes d’animaux se dirigeant vers les personnes, soit un petit mammifère en longueur et plus loin un plus gros quadrupède avec une flèche vers la droite, suivi d’un oiseau plus haut, puis d’une branche avec deux feuilles opposées et une feuille terminale et enfin un cercle entourant un w avec quatre traits s’éloignant. Un demi-cercle bleu ciel traverse le centre de la toile sous les perches en s’ouvrant vers le haut Une bande bleue sous la toile est couverte d’un motif noir à demi-cercle ouvert vers le bas avec un point au centre.SOS Territoire est un groupe de recherche et d’action pour la protection du territoire dans une perspective écologique et dans un rapprochement entre les autochtones et non-autochtones, notamment à travers l’Alliance Mamo en construction.

+

L'Alliance Mamo (Mamo veut dire « ensemble » en atikamekw nehiromowin) est un projet porté par SOS Territoire. L’Alliance Mamo se veut un réseau d’action et de communication entre Autochtones et Allochtones pour la défense de la biodiversité et contre le colonialisme. La toile ci-contre a été réalisée par l’artiste atikamekw Jacques Newashish lors de Mitshetuteuat II pour l’Alliance Mamo. Megwetch Monsieur Newashish !

+

Le territoire en péril est considéré sous ses diverses formes – forêts, rivières et lacs, sous-sol, terres cultivables, environnement rural ou urbain – incluant ses habitant.e.s : animales/animaux, humain.e.s et végétaux/végétales. Les communautés des Premières Nations sont des témoins privilégiés de l’état des territoires soi-disant « non habités ». Souvent les premières victimes humaines de la destruction de ces écosystèmes auxquels leur identité traditionnelle est inextricablement liée, les Autochtones sont des allié.e.s essentiel.le.s de l’écologie sociale afin de se diriger vers une société écologique et conviviale.

+
+ +
+

+
+
+

Stasis

+
+
+

Bannière de Stasis, en noir et blanc. Une photo d’un panorama de l’horizon à l’envers de sorte que le ciel plus pâle est en bas et la terre rocailleuse est en haut. En bas, dans le ciel, est écrit en noir “Groupe d’enquête sur le contemporain”.

+

Icône de Stasis de forme carrée. “Stasis” est écrit en avant-plan, en blanc d’un typographie de type calligraphie. L’arrière-plan est une photo d’horizon à l’envers, de sorte que le ciel pâle est en bas et la terre rocailleuse est en haut. Stasis : Groupe d’enquête sur le contemporain entend, par l’organisation de divers événements, approfondir ce qui forme l’étoffe des résistances politiques d’aujourd’hui. Un lieu commun où la confrontation entre différentes positions favorise l’élaboration d’une perception commune de la situation. Un espace de création et de réflexion qui vise à élucider ce que seraient une ou des révolutions à notre époque. La rédaction d’une revue permettra ultimement de récapituler les enjeux et les thématiques discutés tout au long de l’année.

+
+ +
+
+
+
+
+
+ +
+ + diff --git a/comites/sos-territoire-blanc.svg b/comites/sos-territoire-blanc.svg new file mode 100644 index 0000000..ed97615 --- /dev/null +++ b/comites/sos-territoire-blanc.svg @@ -0,0 +1,93 @@ + + + + + + + + + + +Created by potrace 1.10, written by Peter Selinger 2001-2011 + + + + + + + + + + + + + + + + diff --git a/contact/DS-fleches.png b/contact/DS-fleches.png new file mode 100644 index 0000000..cbc3823 Binary files /dev/null and b/contact/DS-fleches.png differ diff --git a/contact/index.html b/contact/index.html new file mode 100644 index 0000000..f6dc05c --- /dev/null +++ b/contact/index.html @@ -0,0 +1,117 @@ + + + + + + + + + +Contact – GRIP-UQÀM + + + + + + + + + + + + + + +
+ + +
+
+
+
+
+

Contact

+
+
+

Intéressé-e par le GRIP ? Fais-nous part de tes intérêts et abonne-toi à notre infolettre ou envoie-nous un courriel ! :)

+

SVP gardez à l’esprit que ce sont des vraies personnes humaines qui lisent les messages du GRIP ! Nous vous demandons de respectez les limites physiques et émotionnelles de chacun-e dans vos communications. Merci d’être respectueuses, respectueux et empathiques !

+

SVP prenez note que le seul moyen de demander le remboursement CANO est de remplir le formulaire de remboursement CANO pendant la la période de remboursement. PAS par courriel. +
PAS de code permanent UQAM valide dans le formulaire = PAS de remboursement +
Voir les informations par rapport à la procédure.

+

Courriel : Notre courriel principal est <info@gripuqam.org>, ajoutez-le à vos contacts afin que nos réponses ne se retrouvent pas dans votre dossier spam !

+

Pour rejoindre le conseil d'administration : ca-gripuqam@lists.riseup.net

+

Pour rejoindre le conseil d'administration et les employé-e-xs : grip-ca-ce-employe-e-s@lists.riseup.net

+

Suivez nous : https://www.facebook.com/GRIPUQAM

+

https://www.instagram.com/grip_uqam/

+

En personne : Local J-M885 (derrière la porte J-M880 commune avec le CSPE-UQAM), niveau métro au pavillon Judith-Jasmin (J) : 405, rue Sainte-Catherine Est, H2L 2C4 (Métro Berri-UQÀM)

+

Dans le pavillon J, à l'intersection des couloirs allant vers le pavillon R et vers le pavillon A, aller vers le A et tout de suite après l'escalier descendant la porte sera à votre gauche, en face des locaux des groupes médias. Si vous venez du pavillon A, nos locaux seront à votre droite après le café étudiant Salon G et avant les escaliers qui montent vers le reste du pavillon J.

+

Voir sur open street map.

+

Par la poste :
+GRIP-UQAM
+J-M885-405 RUE Ste-Catherine E
+CP 8888 Succ Centre-Ville
+Montréal, Québec H3C 3P8

+
+
+
+
+
+ +
+ + diff --git a/dedommagement-2023.docx b/dedommagement-2023.docx new file mode 100644 index 0000000..7cbb043 Binary files /dev/null and b/dedommagement-2023.docx differ diff --git a/dedommagement-2023.pdf b/dedommagement-2023.pdf new file mode 100644 index 0000000..f1862b9 Binary files /dev/null and b/dedommagement-2023.pdf differ diff --git a/dedommagement-2024.docx b/dedommagement-2024.docx new file mode 100644 index 0000000..9014ca9 Binary files /dev/null and b/dedommagement-2024.docx differ diff --git a/dedommagement-2024.pdf b/dedommagement-2024.pdf new file mode 100644 index 0000000..9e54138 Binary files /dev/null and b/dedommagement-2024.pdf differ diff --git a/dedommagement.docx b/dedommagement.docx new file mode 100644 index 0000000..9014ca9 Binary files /dev/null and b/dedommagement.docx differ diff --git a/dedommagement.pdf b/dedommagement.pdf new file mode 100644 index 0000000..9e54138 Binary files /dev/null and b/dedommagement.pdf differ diff --git a/documents/Code Véronneau-AFESH-Hiver-2015.docx b/documents/Code Véronneau-AFESH-Hiver-2015.docx new file mode 100644 index 0000000..8f485e3 Binary files /dev/null and b/documents/Code Véronneau-AFESH-Hiver-2015.docx differ diff --git a/documents/Code Véronneau-AFESH-Hiver-2015.odt b/documents/Code Véronneau-AFESH-Hiver-2015.odt new file mode 100644 index 0000000..dcbaa67 Binary files /dev/null and b/documents/Code Véronneau-AFESH-Hiver-2015.odt differ diff --git a/documents/Code Véronneau-AFESH-Hiver-2015.pdf b/documents/Code Véronneau-AFESH-Hiver-2015.pdf new file mode 100644 index 0000000..33c0cf5 Binary files /dev/null and b/documents/Code Véronneau-AFESH-Hiver-2015.pdf differ diff --git a/documents/Politique_no_51.pdf b/documents/Politique_no_51.pdf new file mode 100644 index 0000000..7d9778b Binary files /dev/null and b/documents/Politique_no_51.pdf differ diff --git a/documents/Règlements généraux GRIP-UQAM version 2019-11-14.pdf b/documents/Règlements généraux GRIP-UQAM version 2019-11-14.pdf new file mode 100644 index 0000000..3caa9d3 Binary files /dev/null and b/documents/Règlements généraux GRIP-UQAM version 2019-11-14.pdf differ diff --git a/documents/Règlements généraux GRIP-UQAM version 2023-09-21.pdf b/documents/Règlements généraux GRIP-UQAM version 2023-09-21.pdf new file mode 100644 index 0000000..6b19b2f Binary files /dev/null and b/documents/Règlements généraux GRIP-UQAM version 2023-09-21.pdf differ diff --git a/documents/index.html b/documents/index.html new file mode 100644 index 0000000..0989e6b --- /dev/null +++ b/documents/index.html @@ -0,0 +1,246 @@ + + + + + + + + + +Documents – GRIP-UQÀM + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Documents

+
+ +
+ +

Règlements généraux et Politiques

+

+

+

Procès verbaux des assemblées générales

+

2024

+ +

2023

+ +

2022

+ +

2021

+ +

2020

+ +

2019

+ +

2018

+ +

2017

+ +

2016

+ +

2015

+ +

2014

+ +

2013

+ + + +
+ +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/dédommagement.docx b/dédommagement.docx new file mode 100644 index 0000000..9014ca9 Binary files /dev/null and b/dédommagement.docx differ diff --git a/dédommagement.pdf b/dédommagement.pdf new file mode 100644 index 0000000..9e54138 Binary files /dev/null and b/dédommagement.pdf differ diff --git a/faq/index.html b/faq/index.html new file mode 100644 index 0000000..56bc372 --- /dev/null +++ b/faq/index.html @@ -0,0 +1,319 @@ + + + + + + + + +Cotisation – GRIP-UQÀM + + + + + + + + + + + + + + +
+ + +
+
+
+ +
+
+

Questions et réponses, infos sur la cotisation automatique non-obligatoire (CANO)

+
+
+

SVP gardez à l’esprit que ce sont des vraies personnes humaines qui lisent les messages du GRIP ! Nous vous demandons de respectez les limites physiques et émotionnelles de chacun-e dans vos communications. Merci d’être respectueuses, respectueux et empathiques !

+

Lien du formulaire de remboursement CANO : >>> https://f.gripuqam.org/cano <<<
+Suite aux exigences émises par les services financiers de l'UQAM, nous sommes dans l'obligation de vous informer que :
+PAS de code permanent de l'UQAM valide dans le formulaire lié au courriel d'inscription = PAS de remboursement.

+

+Table des matière +

+

+

Formulaire de remboursement (par crédit sur la facture étudiante).

+

Retour à la page principale

+
+
+ +

Quelle est la procédure de remboursement (par crédit sur la facture étudiante) ?

+ +

Lien du formulaire de remboursement CANO : >>> https://f.gripuqam.org/cano <<<
+Suite aux exigences émises par les services financiers de l'UQAM, nous sommes dans l'obligation de vous informer que :
+PAS de code permanent de l'UQAM valide dans le formulaire lié au courriel d'inscription = PAS de remboursement.

+

Ce formulaire est disponible uniquement pendant la période de remboursement, soit pour le session d’hiver 2025 du 6 janvier au 31 janvier 2025, 17h.

+

Tu auras besoin de ton code permanent de l'UQAM (pas du ministère/CÉGEP) et de ton courriel étudiant UQAM de forme nom.prénom@courrier.uqam.ca pour remplir ce formulaire.

+

Remplir ce formulaire est la seule façon de demander le remboursement de la CANO au GRIP-UQAM.

+

Le formulaire est fermé en dehors des périodes de remboursement.

+

Aucune demande de remboursement n'est traitée en dehors des périodes de remboursement ni concernant une autre session passée ou future, il n'y a pas de retrait à long terme.

+

Retour à la table des matières

+ +

C'est quand la période de remboursement ?

+

La prochaine période de remboursement (par crédit sur la facture étudiante) se fera lors des 20 premiers jours ouvrables de la prochaine session :

+

Hiver 2025 : du 6 janvier au 31 janvier 2025, 17h.

+

Les dernières périodes de remboursement (par crédit sur la facture étudiante) qui sont terminées étaient :

+

    +
  • Automne 2024 : du 3 septembre 2024 au 1 octobre 2024, 17h.
  • +
  • Été 2024 : du 29 avril 2024 au 27 mai 2024, 17h.
  • +
  • Hiver 2024 : du 8 janvier 2024 au 2 février 2024, 17h.
  • +
  • Automne 2023 : du 5 septembre 2023 au 3 octobre 2023, 17 h.
  • +
  • Hiver 2023 : du 9 janvier 2023 au 3 février 2023, 17 h.
  • +
  • Été 2023 : du 1er mai 2023 au 29 mai 2023, 17 h.
  • +

+

Voir les calendriers pour trouver la date unique de début pour les sessions qui ne sont pas encore affichées ici.

+

Les dates sont habituellement publiées un peu avant le début de la session sur la page CANO des services à la vie étudiante.

+

Voir le lien pour le formulaire de remboursement.

+

Retour à la table des matières

+
+ +

C'est quoi la CANO ?

+

La cotisation automatique non-obligatoire (CANO) est facturée automatiquement sur la facture étudiante comme cotisation, ce qui vous permet d'être membre du GRIP-UQAM, à moins que vous ne demandiez le remboursement de la cotisation. +

La CANO est perçue par l'UQAM en qualité de mandataire et fiduciaire du groupe d'envergure GRIP-UQAM à chaque session d'étude.

+

D'autres groupe reconnus par l'UQAM reçoivent aussi une CANO.

+

Maintenir ta cotisation au GRIP-UQAM te donne le statut de membre à part entière de l’organisme.

+

Ça te permet de participer aux comités, aux assemblées et aux activités du GRIP.

+

Ta cotisation aide également de nombreuses personnes étudiant à l’UQAM à faire vivre la mission écologique et sociale du GRIP au sein de l’Université et de la communauté; et ce par une diversité de projets de recherche, de sensibilisation et d’actions sur des enjeux d’intérêt public.

+

Tu peux consulter la liste de nos comités ou nous contacter afin d’en savoir plus sur le GRIP-UQÀM et sur les différentes manières de s’y impliquer.

+

Retour à la table des matières

+
+ +

C'est quoi un GRIP ?

+

Les groupe de recherche d’intérêt public (GRIP) et en anglais "Québec Public Interest Research Group" (PIRG) sont des organismes qui sont apparus au début des années 1970 sur les campus universitaires américains et canadiens. Voici quelques exemples des GRIP à travers le Canada : +

    +
  • OPIRG-GRIPO, le GRIP de l'Université d'Ottawa ouvre officiellement ses portes à l'automne 1978.
  • +
  • OPIRG Carleton est constitué lors de l'année 1979-1980.
  • +
  • SFPIRG, le GRIP de l'université Simon Fraser est constitué en 1981.
  • +
  • QPIRG Concordia est constitué en 1981.
  • +
  • QPIRG McGill est constitué en 1989.
  • +
  • GRIP Udem, le groupe étudiant de recherche en intervention d'intérêt public du québec à l'Université de Montréal est constitué en 1991 et aide le GRIP-UQAM à se constituer, mais il est dissout quelques années plus tard.
  • +
  • OPIRG Kingston est constitué en 1992.
  • +
  • GRIP-UQAM est constitué en 1993.
  • + +
+

+En mettant une quantité individuellement minime d'argent en commun, il devient alors possible de financier toutes sortes d'activités, de recherches et de lutter ensemble pour un meilleur avenir. +

+

Retour à la table des matières

+
+ +

C'est quoi le GRIP-UQAM ?

+

+Fondé en 1993, le Groupe de Recherche d’Intérêt Public du Québec à l’Université du Québec à Montréal (GRIP-UQAM) est un collectif universitaire ouvert à tous et toutes les étudiant-e-s désirant s’impliquer, s’interroger et agir sur les questions environnementales et sociales. +

+Le GRIPUQÀM est un observatoire critique, une pouponnière d’idées et un lieu de diffusion permettant d’envisager le changement social. Il offre des informations et des outils à la communauté uqamienne afin de mieux saisir les enjeux qui sont reliés à l’écologie sociale. +

+Mission +

+Par, pour et avec la communauté uqamienne, le GRIP réfléchit sur les enjeux socio-écologiques qui touchent directement et indirectement tous les individus et toutes les sociétés présentes et futures. +

+Devant les défis posés par la crise écologique (changements climatiques, perte de biodiversité, rupture des mécanismes naturels de régulations, etc.) due à l’activité humaine, le GRIP travaille, recherche et s’appuie sur des modèles politico-économiques alternatifs, existants et à construire, fondés sur le développement d’initiatives locales, communautaires et écologiques axées sur la démocratie participative, la coopération et le partage des connaissances et des ressources. +

+En remettant en question le productivisme, la croissance économique illimitée ainsi que la culture économiciste dominante, le GRIP réinterprète et réaffirme l’interdépendance des humains entre eux et elles (entraide et solidarité) et entre les humains et les écosystèmes (l’humanité dans la nature). +

+Engagé dans une réappropriation critique de l’espace physique, culturel et symbolique, grâce à la sensibilisation, la concertation, la transdisciplinarité et la mise en relation des partenaires intra et extra uqamiens dans un but d’autonomie collective, sa mission est d’encourager, dans la communauté, le sentiment d’appartenance au projet d’une société écologique et conviviale. +

+Le GRIP-UQAM souhaite agir de façon équitable en visant le très long terme pour le bien-être social et écologique des collectivités présentes et futures en luttant contre les diverses formes d'oppression. +

+Continuer à lire sur le GRIP-UQAM... +

+

Retour à la table des matières

+
+ +

Comment devenir membre du GRIP-UQAM ?

+

+Si tu étudies à l'UQAM et que tu as payé ta facture tu es déjà membre du GRIP-UQAM ! :) +

+Par contre, si vous demandez le remboursement de la cotisation automatique non-obligatoire (CANO), vous perdez le statut de membre du GRIP-UQAM. +

+Si vous n'étudiez pas à l'UQAM vous pouvez aussi devenir member en donnant 10h de bénévolat par année au GRIP-UQAM. +

+Continuer à lire sur le GRIP-UQAM... +

+

Retour à la table des matières

+
+ +

C'est quoi l'histoire de la CANO au GRIP-UQAM ?

+

Le Groupe de recherches d’intérêt public (GRIP) a été reconnu officiellement par l'UQAM à titre de groupe d'envergure, et par la suite a reçu en 2012 l’appui de l’ensemble des associations étudiantes facultaires de l’UQAM pour commencer à recevoir la cotisation automatique non-obligatoire de 2$ par personne par session.

+

Lors de la session d'hiver 2023, le GRIP-UQAM réunit en assemblée générale extraordinaire 115 personnes étudiant à l'UQAM pour faire augmenter de 25% sa cotisation automatique non-obligatoire à 2,50$ par personne par session.

+

Cette cotisation a pour but de soutenir l’ensemble des comités à vocation écologique et sociale réunies dans le GRIP-UQAM, ainsi que les nouvelles initiatives de la même nature proposées par les personnes étudiant à l'UQAM, qui luttent contres différentes formes d'oppressions, de fournir un salaire décent à nos employé-e-s et de compenser l'inflation énorme depuis 2012.

+

Retour à la table des matières

+
+ +

Qu'est-ce que ça donne la CANO au GRIP-UQAM ?

+

Maintenir ta cotisation au GRIP-UQAM te donne le statut de membre à part entière de l’organisme.

+

Ça te permet de participer aux comités, aux assemblées et aux activités du GRIP.

+

Ta cotisation aide également de nombreuses personnes étudiant à l’UQAM à faire vivre la mission écologique et sociale du GRIP au sein de l’Université et de la communauté; et ce par une diversité de projets de recherche, de sensibilisation et d’actions sur des enjeux d’intérêt public.

+

Tu peux consulter la liste de nos comités ou nous contacter afin d’en savoir plus sur le GRIP-UQÀM et sur les différentes manières de s’y impliquer.

+

Retour à la table des matières

+
+ +

C'est combien la CANO ?

+

Pour la période de la session d'automne 2012 jusqu'à la session d'été 2023 inclusivenent, la cotisation automatique non-obligatoire (CANO) est de 2$ par personne étudiant à l'UQAM par session (automne, hiver, été).

+

À partir de la session d'automne 2023 la cotisation automatique non-obligatoire (CANO) est de 2,50$ suite à l'augmentation obtenue en assemblée générale.

+

Retour à la table des matières

+
+ +

Ok, mais pourquoi c'est automatique si c'est non-obligatoire ?

+

La cotisation automatique non-obligatoire (CANO) est facturée automatiquement sur la facture étudiante et elle doit être payée, mais une fois payée elle est remboursable en présentant une demande lors des 20 premiers jours ouvrables de la session à l'organisme qui bénéficie de la CANO.

+

Avec des petites sommes perçue pour chaque personne étudiant à l'UQAM il est possible d'obtenir assez de ressources pour en faire bénéficier toute la communauté étudiante. Voir aussi la question sur les GRIP.

+

Cette procédure a été mise en place par l'UQAM et il n'est pas en notre pouvoir de modifier son fonctionnement.

+

Retour à la table des matières

+
+ +

Est-ce que je suis obligé de payer la CANO ?

+

Oui, si tu es incrit-e à l'UQAM tu dois dans un premier temps payer la CANO.

+

Tu peux ensuite si tu le désires demander le remboursement, mais seulement pendant la période de remboursement (20 premiers jours ouvrables de la session).

+

Conformément aux consignes des Services à la vie étudiante, avant de faire la demande de remboursement "le premier versement doit obligatoirement être payé".

+

Sur la page des comptes étudiants de l'UQAM : "Vous devez absolument payer la cotisation avant de demander le remboursement." Pour voir cette citation, cliquez la section "Cotisation automatique non obligatoire (CANO)" après avoir suivi le lien.

+

Après avoir payé la cotisation automatique non-obligatoire (CANO) il est alors possible de demander un remboursement (par crédit sur la facture étudiante).

+

Même s’il s’agit de ta dernière session il faut payer la cotisation pour demander un remboursement. Une fois le formulaire complété et transmis, s'il reste un crédit non utilisé, alors les Comptes étudiants de l'UQAM se chargeront d'envoyer un remboursement, le cas échéant.

+

Voir ce qui se passe après avoir rempli le formulaire.

+

Retour à la table des matières

+
+ + + +

Par rapport à la CANO de la dernière session...

+

Aucune demande de remboursement n’est traitée en dehors des périodes de remboursement ou concernant une autre session passée ou future.

+

Retour à la table des matières

+
+ +

Par rapport à la CANO des prochaines sessions...

+

Aucune demande de remboursement n’est traitée en dehors des périodes de remboursement ou concernant un autre session passée ou future.

+

AIl n’y a pas de retrait à long terme.

+

Retour à la table des matières

+
+ +

Et les autres frais CANO / assurances collectives / assos ?

+

Le maximum que vous pouvez nous demander est le montant de la cotisation automatique non-obligatoire (CANO) de la session actuelle qui a été perçu pour le GRIP-UQAM.

+

Les autres frais concernent d’autres organismes complètement indépendants.

+

Voir les autres organismes qui reçoivent la CANO.

+

Voir les assurances collectives.

+

Voir Comptes étudiants pour tous les frais (obligatoires et non-obligatoires).

+

Retour à la table des matières

+
+ +

Pourquoi ma facture n'indique pas encore le crédit ?

+

À la fin de la période de remboursement, les codes permanents sont transmis aux services financiers de l’UQAM qui entrent les crédits sur la facture étudiante au cours de la session, ça prend du temps.

+

Nous n'avons aucun contrôle ni aucune information par rapport au temps nécessaire avant que le crédit apparaisse sur ta facture.

+Une fois les codes permanents transmis nous n'avons pas plus d'information que les indications de l'UQAM que le crédit sera utilisable lors de la prochaine session.

+

S’il s’agit de ta dernière session et qu'il reste un crédit non utilisé alors les Comptes étudiants de l'UQAM se chargeront d'envoyer un remboursement, le cas échéant.

+

Retour à la table des matières

+
+ +

Qu'est-ce qui se passe après avoir rempli le formulaire ?

+

Si la demande a bien été envoyée dans les 20 premiers jours ouvrables à partir de la date unique de début de la session avec le bon code permanent de l'UQAM ce code sera ajouté à la liste pour le remboursement CANO.

+

La liste sera envoyée après la fin de la période de remboursement CANO aux Services à la vie étudiante de l'UQAM qui l'acheminera aux services financiers de l'UQAM qui entrent les crédits sur la facture étudiante au cours de la session, ça prend du temps.

+

Nous n'avons pas de contrôle ni d'information par rapport au temps nécessaire avant que le crédit apparaisse sur ta facture.

+

Le crédit sera utilisable lors de la prochaine session.

+

S’il s’agit de ta dernière session et qu'il reste un crédit non utilisé alors les Comptes étudiants de l'UQAM se chargeront d'envoyer un remboursement, le cas échéant.

+

Retour à la table des matières

+
+ +

Quel est la police de caractère utilisée sur ce site web ?

+

Is s'agit de OpenDyslexic, une police de caractères conçue pour lutter contre certains symptômes courants de la dyslexie. +

L'utilisation de OpenDyslexic est libre ! La dernière version d'OpenDyslexic utilise désormais la licence SIL-OFL, offrant la liberté de l'utiliser à des fins personnelles, professionnelles, éducatives, commerciales, pour des livres, des lecteurs d'ebook, des applications, des sites web, et tout autre projet ou objectif dont vous avez besoin.

+

Retour à la table des matières

+
+ +
+
+
+ +
+ + diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000..bcceeb8 Binary files /dev/null and b/favicon.ico differ diff --git a/fonts/OFL-FAQ.txt b/fonts/OFL-FAQ.txt new file mode 100644 index 0000000..2485417 --- /dev/null +++ b/fonts/OFL-FAQ.txt @@ -0,0 +1,435 @@ +OFL FAQ - Frequently Asked Questions about the SIL Open Font License (OFL) +Version 1.1-update5 - April 2017 +The OFL FAQ is copyright (c) 2005-2017 SIL International. +(See http://scripts.sil.org/OFL for updates) + + +CONTENTS OF THIS FAQ +1 USING AND DISTRIBUTING FONTS LICENSED UNDER THE OFL +2 USING OFL FONTS FOR WEB PAGES AND ONLINE WEB FONT SERVICES +3 MODIFYING OFL-LICENSED FONTS +4 LICENSING YOUR ORIGINAL FONTS UNDER THE OFL +5 CHOOSING RESERVED FONT NAMES +6 ABOUT THE FONTLOG +7 MAKING CONTRIBUTIONS TO OFL PROJECTS +8 ABOUT THE LICENSE ITSELF +9 ABOUT SIL INTERNATIONAL +APPENDIX A - FONTLOG EXAMPLE + +1 USING AND DISTRIBUTING FONTS LICENSED UNDER THE OFL + +1.1 Can I use the fonts for a book or other print publication, to create logos or other graphics or even to manufacture objects based on their outlines? +Yes. You are very welcome to do so. Authors of fonts released under the OFL allow you to use their font software as such for any kind of design work. No additional license or permission is required, unlike with some other licenses. Some examples of these uses are: logos, posters, business cards, stationery, video titling, signage, t-shirts, personalised fabric, 3D-printed/laser-cut shapes, sculptures, rubber stamps, cookie cutters and lead type. + +1.1.1 Does that restrict the license or distribution of that artwork? +No. You remain the author and copyright holder of that newly derived graphic or object. You are simply using an open font in the design process. It is only when you redistribute, bundle or modify the font itself that other conditions of the license have to be respected (see below for more details). + +1.1.2 Is any kind of acknowledgement required? +No. Font authors may appreciate being mentioned in your artwork's acknowledgements alongside the name of the font, possibly with a link to their website, but that is not required. + +1.2 Can the fonts be included with Free/Libre and Open Source Software collections such as GNU/Linux and BSD distributions and repositories? +Yes! Fonts licensed under the OFL can be freely included alongside other software under FLOSS (Free/Libre and Open Source Software) licenses. Since fonts are typically aggregated with, not merged into, existing software, there is little need to be concerned about incompatibility with existing software licenses. You may also repackage the fonts and the accompanying components in a .rpm or .deb package (or other similar package formats or installers) and include them in distribution CD/DVDs and online repositories. (Also see section 5.9 about rebuilding from source.) + +1.3 I want to distribute the fonts with my program. Does this mean my program also has to be Free/Libre and Open Source Software? +No. Only the portions based on the Font Software are required to be released under the OFL. The intent of the license is to allow aggregation or bundling with software under restricted licensing as well. + +1.4 Can I sell a software package that includes these fonts? +Yes, you can do this with both the Original Version and a Modified Version of the fonts. Examples of bundling made possible by the OFL would include: word processors, design and publishing applications, training and educational software, games and entertainment software, mobile device applications, etc. + +1.5 Can I include the fonts on a CD of freeware or commercial fonts? +Yes, as long some other font or software is also on the disk, so the OFL font is not sold by itself. + +1.6 Why won't the OFL let me sell the fonts alone? +The intent is to keep people from making money by simply redistributing the fonts. The only people who ought to profit directly from the fonts should be the original authors, and those authors have kindly given up potential direct income to distribute their fonts under the OFL. Please honour and respect their contribution! + +1.7 What about sharing OFL fonts with friends on a CD, DVD or USB stick? +You are very welcome to share open fonts with friends, family and colleagues through removable media. Just remember to include the full font package, including any copyright notices and licensing information as available in OFL.txt. In the case where you sell the font, it has to come bundled with software. + +1.8 Can I host the fonts on a web site for others to use? +Yes, as long as you make the full font package available. In most cases it may be best to point users to the main site that distributes the Original Version so they always get the most recent stable and complete version. See also discussion of web fonts in Section 2. + +1.9 Can I host the fonts on a server for use over our internal network? +Yes. If the fonts are transferred from the server to the client computer by means that allow them to be used even if the computer is no longer attached to the network, the full package (copyright notices, licensing information, etc.) should be included. + +1.10 Does the full OFL license text always need to accompany the font? +The only situation in which an OFL font can be distributed without the text of the OFL (either in a separate file or in font metadata), is when a font is embedded in a document or bundled within a program. In the case of metadata included within a font, it is legally sufficient to include only a link to the text of the OFL on http://scripts.sil.org/OFL, but we strongly recommend against this. Most modern font formats include metadata fields that will accept the full OFL text, and full inclusion increases the likelihood that users will understand and properly apply the license. + +1.11 What do you mean by 'embedding'? How does that differ from other means of distribution? +By 'embedding' we mean inclusion of the font in a document or file in a way that makes extraction (and redistribution) difficult or clearly discouraged. In many cases the names of embedded fonts might also not be obvious to those reading the document, the font data format might be altered, and only a subset of the font - only the glyphs required for the text - might be included. Any other means of delivering a font to another person is considered 'distribution', and needs to be accompanied by any copyright notices and licensing information available in OFL.txt. + +1.12 So can I embed OFL fonts in my document? +Yes, either in full or a subset. The restrictions regarding font modification and redistribution do not apply, as the font is not intended for use outside the document. + +1.13 Does embedding alter the license of the document itself? +No. Referencing or embedding an OFL font in any document does not change the license of the document itself. The requirement for fonts to remain under the OFL does not apply to any document created using the fonts and their derivatives. Similarly, creating any kind of graphic using a font under OFL does not make the resulting artwork subject to the OFL. + +1.14 If OFL fonts are extracted from a document in which they are embedded (such as a PDF file), what can be done with them? Is this a risk to author(s)? +The few utilities that can extract fonts embedded in a PDF will typically output limited amounts of outlines - not a complete font. To create a working font from this method is much more difficult and time consuming than finding the source of the original OFL font. So there is little chance that an OFL font would be extracted and redistributed inappropriately through this method. Even so, copyright laws address any misrepresentation of authorship. All Font Software released under the OFL and marked as such by the author(s) is intended to remain under this license regardless of the distribution method, and cannot be redistributed under any other license. We strongly discourage any font extraction - we recommend directly using the font sources instead - but if you extract font outlines from a document, please be considerate: respect the work of the author(s) and the licensing model. + +1.15 What about distributing fonts with a document? Within a compressed folder structure? Is it distribution, bundling or embedding? +Certain document formats may allow the inclusion of an unmodified font within their file structure which may consist of a compressed folder containing the various resources forming the document (such as pictures and thumbnails). Including fonts within such a structure is understood as being different from embedding but rather similar to bundling (or mere aggregation) which the license explicitly allows. In this case the font is conveyed unchanged whereas embedding a font usually transforms it from the original format. The OFL does not allow anyone to extract the font from such a structure to then redistribute it under another license. The explicit permission to redistribute and embed does not cancel the requirement for the Font Software to remain under the license chosen by its author(s). Even if the font travels inside the document as one of its assets, it should not lose its authorship information and licensing. + +1.16 What about ebooks shipping with open fonts? +The requirements differ depending on whether the fonts are linked, embedded or distributed (bundled or aggregated). Some ebook formats use web technologies to do font linking via @font-face, others are designed for font embedding, some use fonts distributed with the document or reading software, and a few rely solely on the fonts already present on the target system. The license requirements depend on the type of inclusion as discussed in 1.15. + +1.17 Can Font Software released under the OFL be subject to URL-based access restrictions methods or DRM (Digital Rights Management) mechanisms? +Yes, but these issues are out-of-scope for the OFL. The license itself neither encourages their use nor prohibits them since such mechanisms are not implemented in the components of the Font Software but through external software. Such restrictions are put in place for many different purposes corresponding to various usage scenarios. One common example is to limit potentially dangerous cross-site scripting attacks. However, in the spirit of libre/open fonts and unrestricted writing systems, we strongly encourage open sharing and reuse of OFL fonts, and the establishment of an environment where such restrictions are unnecessary. Note that whether you wish to use such mechanisms or you prefer not to, you must still abide by the rules set forth by the OFL when using fonts released by their authors under this license. Derivative fonts must be licensed under the OFL, even if they are part of a service for which you charge fees and/or for which access to source code is restricted. You may not sell the fonts on their own - they must be part of a larger software package, bundle or subscription plan. For example, even if the OFL font is distributed in a software package or via an online service using a DRM mechanism, the user would still have the right to extract that font, use, study, modify and redistribute it under the OFL. + +1.18 I've come across a font released under the OFL. How can I easily get more information about the Original Version? How can I know where it stands compared to the Original Version or other Modified Versions? +Consult the copyright statement(s) in the license for ways to contact the original authors. Consult the FONTLOG (see section 6 for more details and examples) for information on how the font differs from the Original Version, and get in touch with the various contributors via the information in the acknowledgement section. Please consider using the Original Versions of the fonts whenever possible. + +1.19 What do you mean in condition 4 of the OFL's permissions and conditions? Can you provide examples of abusive promotion / endorsement / advertisement vs. normal acknowledgement? +The intent is that the goodwill and reputation of the author(s) should not be used in a way that makes it sound like the original author(s) endorse or approve of a specific Modified Version or software bundle. For example, it would not be right to advertise a word processor by naming the author(s) in a listing of software features, or to promote a Modified Version on a web site by saying "designed by ...". However, it would be appropriate to acknowledge the author(s) if your software package has a list of people who deserve thanks. We realize that this can seem to be a grey area, but the standard used to judge an acknowledgement is that if the acknowledgement benefits the author(s) it is allowed, but if it primarily benefits other parties, or could reflect poorly on the author(s), then it is not. + +1.20 I'm writing a small app for mobile platforms, do I need to include the whole package? +If you bundle a font under the OFL with your mobile app you must comply with the terms of the license. At a minimum you must include the copyright statement, the license notice and the license text. A mention of this information in your About box or Changelog, with a link to where the font package is from, is good practice, and the extra space needed to carry these items is very small. You do not, however, need to include the full contents of the font package - only the fonts you use and the copyright and license that apply to them. For example, if you only use the regular weight in your app, you do not need to include the italic and bold versions. + +1.21 What about including OFL fonts by default in my firmware or dedicated operating system? +Many such systems are restricted and turned into appliances so that users cannot study or modify them. Using open fonts to increase quality and language coverage is a great idea, but you need to be aware that if there is a way for users to extract fonts you cannot legally prevent them from doing that. The fonts themselves, including any changes you make to them, must be distributed under the OFL even if your firmware has a more restrictive license. If you do transform the fonts and change their formats when you include them in your firmware you must respect any names reserved by the font authors via the RFN mechanism and pick your own font name. Alternatively if you directly add a font under the OFL to the font folder of your firmware without modifying or optimizing it you are simply bundling the font like with any other software collection, and do not need to make any further changes. + +1.22 Can I make and publish CMS themes or templates that use OFL fonts? Can I include the fonts themselves in the themes or templates? Can I sell the whole package? +Yes, you are very welcome to integrate open fonts into themes and templates for your preferred CMS and make them more widely available. Remember that you can only sell the fonts and your CMS add-on as part of a software bundle. (See 1.4 for details and examples about selling bundles). + +1.23 Can OFL fonts be included in services that deliver fonts to the desktop from remote repositories? Even if they contain both OFL and non-OFL fonts? +Yes. Some foundries have set up services to deliver fonts to subscribers directly to desktops from their online repositories; similarly, plugins are available to preview and use fonts directly in your design tool or publishing suite. These services may mix open and restricted fonts in the same channel, however they should make a clear distinction between them to users. These services should also not hinder users (such as through DRM or obfuscation mechanisms) from extracting and using the OFL fonts in other environments, or continuing to use OFL fonts after subscription terms have ended, as those uses are specifically allowed by the OFL. + +1.24 Can services that provide or distribute OFL fonts restrict my use of them? +No. The terms of use of such services cannot replace or restrict the terms of the OFL, as that would be the same as distributing the fonts under a different license, which is not allowed. You are still entitled to use, modify and redistribute them as the original authors have intended outside of the sole control of that particular distribution channel. Note, however, that the fonts provided by these services may differ from the Original Versions. + + +2 USING OFL FONTS FOR WEBPAGES AND ONLINE WEB FONT SERVICES + +NOTE: This section often refers to a separate paper on 'Web Fonts & RFNs'. This is available at http://scripts.sil.org/OFL_web_fonts_and_RFNs + +2.1 Can I make webpages using these fonts? +Yes! Go ahead! Using CSS (Cascading Style Sheets) is recommended. Your three best options are: +- referring directly in your stylesheet to open fonts which may be available on the user's system +- providing links to download the full package of the font - either from your own website or from elsewhere - so users can install it themselves +- using @font-face to distribute the font directly to browsers. This is recommended and explicitly allowed by the licensing model because it is distribution. The font file itself is distributed with other components of the webpage. It is not embedded in the webpage but referenced through a web address which will cause the browser to retrieve and use the corresponding font to render the webpage (see 1.11 and 1.15 for details related to embedding fonts into documents). As you take advantage of the @font-face cross-platform standard, be aware that web fonts are often tuned for a web environment and not intended for installation and use outside a browser. The reasons in favour of using web fonts are to allow design of dynamic text elements instead of static graphics, to make it easier for content to be localized and translated, indexed and searched, and all this with cross-platform open standards without depending on restricted extensions or plugins. You should check the CSS cascade (the order in which fonts are being called or delivered to your users) when testing. + +2.2 Can I make and use WOFF (Web Open Font Format) versions of OFL fonts? +Yes, but you need to be careful. A change in font format normally is considered modification, and Reserved Font Names (RFNs) cannot be used. Because of the design of the WOFF format, however, it is possible to create a WOFF version that is not considered modification, and so would not require a name change. You are allowed to create, use and distribute a WOFF version of an OFL font without changing the font name, but only if: + +- the original font data remains unchanged except for WOFF compression, and +- WOFF-specific metadata is either omitted altogether or present and includes, unaltered, the contents of all equivalent metadata in the original font. + +If the original font data or metadata is changed, or the WOFF-specific metadata is incomplete, the font must be considered a Modified Version, the OFL restrictions would apply and the name of the font must be changed: any RFNs cannot be used and copyright notices and licensing information must be included and cannot be deleted or modified. You must come up with a unique name - we recommend one corresponding to your domain or your particular web application. Be aware that only the original author(s) can use RFNs. This is to prevent collisions between a derivative tuned to your audience and the original upstream version and so to reduce confusion. + +Please note that most WOFF conversion tools and online services do not meet the two requirements listed above, and so their output must be considered a Modified Version. So be very careful and check to be sure that the tool or service you're using is compressing unchanged data and completely and accurately reflecting the original font metadata. + +2.3 What about other web font formats such as EOT/EOTLite/CWT/etc.? +In most cases these formats alter the original font data more than WOFF, and do not completely support appropriate metadata, so their use must be considered modification and RFNs may not be used. However, there may be certain formats or usage scenarios that may allow the use of RFNs. See http://scripts.sil.org/OFL_web_fonts_and_RFNs + +2.4 Can I make OFL fonts available through web font online services? +Yes, you are welcome to include OFL fonts in online web font services as long as you properly meet all the conditions of the license. The origin and open status of the font should be clear among the other fonts you are hosting. Authorship, copyright notices and license information must be sufficiently visible to your users or subscribers so they know where the font comes from and the rights granted by the author(s). Make sure the font file contains the needed copyright notice(s) and licensing information in its metadata. Please double-check the accuracy of every field to prevent contradictory information. Other font formats, including EOT/EOTLite/CWT and superior alternatives like WOFF, already provide fields for this information. Remember that if you modify the font within your library or convert it to another format for any reason the OFL restrictions apply and you need to change the names accordingly. Please respect the author's wishes as expressed in the OFL and do not misrepresent original designers and their work. Don't lump quality open fonts together with dubious freeware or public domain fonts. Consider how you can best work with the original designers and foundries, support their efforts and generate goodwill that will benefit your service. (See 1.17 for details related to URL-based access restrictions methods or DRM mechanisms). + +2.5 Some web font formats and services provide ways of "optimizing" the font for a particular website or web application; is that allowed? +Yes, it is permitted, but remember that these optimized versions are Modified Versions and so must follow OFL requirements like appropriate renaming. Also you need to bear in mind the other important parameters beyond compression, speed and responsiveness: you need to consider the audience of your particular website or web application, as choosing some optimization parameters may turn out to be less than ideal for them. Subsetting by removing certain glyphs or features may seriously limit functionality of the font in various languages that your users expect. It may also introduce degradation of quality in the rendering or specific bugs on the various target platforms compared to the original font from upstream. In other words, remember that one person's optimized font may be another person's missing feature. Various advanced typographic features (OpenType, Graphite or AAT) are also available through CSS and may provide the desired effects without the need to modify the font. + +2.6 Is subsetting a web font considered modification? +Yes. Removing any parts of the font when delivering a web font to a browser, including unused glyphs and smart font code, is considered modification. This is permitted by the OFL but would not normally allow the use of RFNs. Some newer subsetting technologies may be able to subset in a way that allows users to effectively have access to the complete font, including smart font behaviour. See 2.8 and http://scripts.sil.org/OFL_web_fonts_and_RFNs + +2.7 Are there any situations in which a modified web font could use RFNs? +Yes. If a web font is optimized only in ways that preserve Functional Equivalence (see 2.8), then it may use RFNs, as it reasonably represents the Original Version and respects the intentions of the author(s) and the main purposes of the RFN mechanism (avoids collisions, protects authors, minimizes support, encourages derivatives). However this is technically very difficult and often impractical, so a much better scenario is for the web font service or provider to sign a separate agreement with the author(s) that allows the use of RFNs for Modified Versions. + +2.8 How do you know if an optimization to a web font preserves Functional Equivalence? +Functional Equivalence is described in full in the 'Web fonts and RFNs' paper at http://scripts.sil.org/OFL_web_fonts_and_RFNs, in general, an optimized font is deemed to be Functionally Equivalent (FE) to the Original Version if it: + +- Supports the same full character inventory. If a character can be properly displayed using the Original Version, then that same character, encoded correctly on a web page, will display properly. +- Provides the same smart font behavior. Any dynamic shaping behavior that works with the Original Version should work when optimized, unless the browser or environment does not support it. There does not need to be guaranteed support in the client, but there should be no forced degradation of smart font or shaping behavior, such as the removal or obfuscation of OpenType, Graphite or AAT tables. +- Presents text with no obvious degradation in visual quality. The lettershapes should be equally (or more) readable, within limits of the rendering platform. +- Preserves original author, project and license metadata. At a minimum, this should include: Copyright and authorship; The license as stated in the Original Version, whether that is the full text of the OFL or a link to the web version; Any RFN declarations; Information already present in the font or documentation that points back to the Original Version, such as a link to the project or the author's website. + +If an optimized font meets these requirements, and so is considered to be FE, then it's very likely that the original author would feel that the optimized font is a good and reasonable equivalent. If it falls short of any of these requirements, the optimized font does not reasonably represent the Original Version, and so should be considered to be a Modified Version. Like other Modified Versions, it would not be allowed to use any RFNs and you simply need to pick your own font name. + +2.9 Isn't use of web fonts another form of embedding? +No. Unlike embedded fonts in a PDF, web fonts are not an integrated part of the document itself. They are not specific to a single document and are often applied to thousands of documents around the world. The font data is not stored alongside the document data and often originates from a different location. The ease by which the web fonts used by a document may be identified and downloaded for desktop use demonstrates that they are philosophically and technically separate from the web pages that specify them. See http://scripts.sil.org/OFL_web_fonts_and_RFNs + +2.10 So would it be better to not use RFNs at all if you want your font to be distributed by a web fonts service? +No. Although the OFL does not require authors to use RFNs, the RFN mechanism is an important part of the OFL model and completely compatible with web font services. If that web font service modifies the fonts, then the best solution is to sign a separate agreement for the use of any RFNs. It is perfectly valid for an author to not declare any RFNs, but before they do so they need to fully understand the benefits they are giving up, and the overall negative effect of allowing many different versions bearing the same name to be widely distributed. As a result, we don't generally recommend it. + +2.11 What should an agreement for the use of RFNs say? Are there any examples? +There is no prescribed format for this agreement, as legal systems vary, and no recommended examples. Authors may wish to add specific clauses to further restrict use, require author review of Modified Versions, establish user support mechanisms or provide terms for ending the agreement. Such agreements are usually not public, and apply only to the main parties. However, it would be very beneficial for web font services to clearly state when they have established such agreements, so that the public understands clearly that their service is operating appropriately. + +See the separate paper on 'Web Fonts & RFNs' for in-depth discussion of issues related to the use of RFNs for web fonts. This is available at http://scripts.sil.org/OFL_web_fonts_and_RFNs + + +3 MODIFYING OFL-LICENSED FONTS + +3.1 Can I change the fonts? Are there any limitations to what things I can and cannot change? +You are allowed to change anything, as long as such changes do not violate the terms of the license. In other words, you are not allowed to remove the copyright statement(s) from the font, but you could put additional information into it that covers your contribution. See the placeholders in the OFL header template for recommendations on where to add your own statements. (Remember that, when authors have reserved names via the RFN mechanism, you need to change the internal names of the font to your own font name when making your modified version even if it is just a small change.) + +3.2 I have a font that needs a few extra glyphs - can I take them from an OFL licensed font and copy them into mine? +Yes, but if you distribute that font to others it must be under the OFL, and include the information mentioned in condition 2 of the license. + +3.3 Can I charge people for my additional work? In other words, if I add a bunch of special glyphs or OpenType/Graphite/AAT code, can I sell the enhanced font? +Not by itself. Derivative fonts must be released under the OFL and cannot be sold by themselves. It is permitted, however, to include them in a larger software package (such as text editors, office suites or operating systems), even if the larger package is sold. In that case, you are strongly encouraged, but not required, to also make that derived font easily and freely available outside of the larger package. + +3.4 Can I pay someone to enhance the fonts for my use and distribution? +Yes. This is a good way to fund the further development of the fonts. Keep in mind, however, that if the font is distributed to others it must be under the OFL. You won't be able to recover your investment by exclusively selling the font, but you will be making a valuable contribution to the community. Please remember how you have benefited from the contributions of others. + +3.5 I need to make substantial revisions to the font to make it work with my program. It will be a lot of work, and a big investment, and I want to be sure that it can only be distributed with my program. Can I restrict its use? +No. If you redistribute a Modified Version of the font it must be under the OFL. You may not restrict it in any way beyond what the OFL permits and requires. This is intended to ensure that all released improvements to the fonts become available to everyone. But you will likely get an edge over competitors by being the first to distribute a bundle with the enhancements. Again, please remember how you have benefited from the contributions of others. + +3.6 Do I have to make any derivative fonts (including extended source files, build scripts, documentation, etc.) publicly available? +No, but please consider sharing your improvements with others. You may find that you receive in return more than what you gave. + +3.7 If a trademark is claimed in the OFL font, does that trademark need to remain in modified fonts? +Yes. Any trademark notices must remain in any derivative fonts to respect trademark laws, but you may add any additional trademarks you claim, officially registered or not. For example if an OFL font called "Foo" contains a notice that "Foo is a trademark of Acme", then if you rename the font to "Bar" when creating a Modified Version, the new trademark notice could say "Foo is a trademark of Acme Inc. - Bar is a trademark of Roadrunner Technologies Ltd.". Trademarks work alongside the OFL and are not subject to the terms of the licensing agreement. The OFL does not grant any rights under trademark law. Bear in mind that trademark law varies from country to country and that there are no international trademark conventions as there are for copyright. You may need to significantly invest in registering and defending a trademark for it to remain valid in the countries you are interested in. This may be costly for an individual independent designer. + +3.8 If I commit changes to a font (or publish a branch in a DVCS) as part of a public open source software project, do I have to change the internal font names? +Only if there are declared RFNs. Making a public commit or publishing a public branch is effectively redistributing your modifications, so any change to the font will require that you do not use the RFNs. Even if there are no RFNs, it may be useful to change the name or add a suffix indicating that a particular version of the font is still in development and not released yet. This will clearly indicate to users and fellow designers that this particular font is not ready for release yet. See section 5 for more details. + + +4 LICENSING YOUR ORIGINAL FONTS UNDER THE OFL + +4.1 Can I use the SIL OFL for my own fonts? +Yes! We heartily encourage everyone to use the OFL to distribute their own original fonts. It is a carefully constructed license that allows great freedom along with enough artistic integrity protection for the work of the authors as well as clear rules for other contributors and those who redistribute the fonts. The licensing model is used successfully by various organisations, both for-profit and not-for-profit, to release fonts of varying levels of scope and complexity. + +4.2 What do I have to do to apply the OFL to my font? +If you want to release your fonts under the OFL, we recommend you do the following: + +4.2.1 Put your copyright and Reserved Font Names information at the beginning of the main OFL.txt file in place of the dedicated placeholders (marked with the <> characters). Include this file in your release package. + +4.2.2 Put your copyright and the OFL text with your chosen Reserved Font Name(s) into your font files (the copyright and license fields). A link to the OFL text on the OFL web site is an acceptable (but not recommended) alternative. Also add this information to any other components (build scripts, glyph databases, documentation, test files, etc). Accurate metadata in your font files is beneficial to you as an increasing number of applications are exposing this information to the user. For example, clickable links can bring users back to your website and let them know about other work you have done or services you provide. Depending on the format of your fonts and sources, you can use template human-readable headers or machine-readable metadata. You should also double-check that there is no conflicting metadata in the font itself contradicting the license, such as the fstype bits in the os2 table or fields in the name table. + +4.2.3 Write an initial FONTLOG.txt for your font and include it in the release package (see Section 6 and Appendix A for details including a template). + +4.2.4 Include the relevant practical documentation on the license by adding the current OFL-FAQ.txt file in your package. + +4.2.5 If you wish you can use the OFL graphics (http://scripts.sil.org/OFL_logo) on your website. + +4.3 Will you make my font OFL for me? +We won't do the work for you. We can, however, try to answer your questions, unfortunately we do not have the resources to review and check your font packages for correct use of the OFL. We recommend you turn to designers, foundries or consulting companies with experience in doing open font design to provide this service to you. + +4.4 Will you distribute my OFL font for me? +No, although if the font is of sufficient quality and general interest we may include a link to it on our partial list of OFL fonts on the OFL web site. You may wish to consider other open font catalogs or hosting services, such as the Unifont Font Guide (http://unifont.org/fontguide), The League of Movable Type (http://theleagueofmovabletype.com) or the Open Font Library (http://openfontlibrary.org/), which despite the name has no direct relationship to the OFL or SIL. We do not endorse any particular catalog or hosting service - it is your responsibility to determine if the service is right for you and if it treats authors with fairness. + +4.5 Why should I use the OFL for my fonts? +- to meet needs for fonts that can be modified to support lesser-known languages +- to provide a legal and clear way for people to respect your work but still use it (and reduce piracy) +- to involve others in your font project +- to enable your fonts to be expanded with new weights and improved writing system/language support +- to allow more technical font developers to add features to your design (such as OpenType, Graphite or AAT support) +- to renew the life of an old font lying on your hard drive with no business model +- to allow your font to be included in Libre Software operating systems like Ubuntu +- to give your font world status and wide, unrestricted distribution +- to educate students about quality typeface and font design +- to expand your test base and get more useful feedback +- to extend your reach to new markets when users see your metadata and go to your website +- to get your font more easily into one of the web font online services +- to attract attention for your commercial fonts +- to make money through web font services +- to make money by bundling fonts with applications +- to make money adjusting and extending existing open fonts +- to get a better chance that foundations/NGOs/charities/companies who commission fonts will pick you +- to be part of a sharing design and development community +- to give back and contribute to a growing body of font sources + + +5 CHOOSING RESERVED FONT NAMES + +5.1 What are Reserved Font Names? +These are font names, or portions of font names, that the author has chosen to reserve for use only with the Original Version of the font, or for Modified Version(s) created by the original author. + +5.2 Why can't I use the Reserved Font Names in my derivative font names? I'd like people to know where the design came from. +The best way to acknowledge the source of the design is to thank the original authors and any other contributors in the files that are distributed with your revised font (although no acknowledgement is required). The FONTLOG is a natural place to do this. Reserved Font Names ensure that the only fonts that have the original names are the unmodified Original Versions. This allows designers to maintain artistic integrity while allowing collaboration to happen. It eliminates potential confusion and name conflicts. When choosing a name, be creative and avoid names that reuse almost all the same letters in the same order or sound like the original. It will help everyone if Original Versions and Modified Versions can easily be distinguished from one another and from other derivatives. Any substitution and matching mechanism is outside the scope of the license. + +5.3 What do you mean by "primary name as presented to the user"? Are you referring to the font menu name? +Yes, this applies to the font menu name and other mechanisms that specify a font in a document. It would be fine, however, to keep a text reference to the original fonts in the description field, in your modified source file or in documentation provided alongside your derivative as long as no one could be confused that your modified source is the original. But you cannot use the Reserved Font Names in any way to identify the font to the user (unless the Copyright Holder(s) allow(s) it through a separate agreement). Users who install derivatives (Modified Versions) on their systems should not see any of the original Reserved Font Names in their font menus, for example. Again, this is to ensure that users are not confused and do not mistake one font for another and so expect features only another derivative or the Original Version can actually offer. + +5.4 Am I not allowed to use any part of the Reserved Font Names? +You may not use individual words from the Reserved Font Names, but you would be allowed to use parts of words, as long as you do not use any word from the Reserved Font Names entirely. We do not recommend using parts of words because of potential confusion, but it is allowed. For example, if "Foobar" was a Reserved Font Name, you would be allowed to use "Foo" or "bar", although we would not recommend it. Such an unfortunate choice would confuse the users of your fonts as well as make it harder for other designers to contribute. + +5.5 So what should I, as an author, identify as Reserved Font Names? +Original authors are encouraged to name their fonts using clear, distinct names, and only declare the unique parts of the name as Reserved Font Names. For example, the author of a font called "Foobar Sans" would declare "Foobar" as a Reserved Font Name, but not "Sans", as that is a common typographical term, and may be a useful word to use in a derivative font name. Reserved Font Names should also be single words for simplicity and legibility. A font called "Flowing River" should have Reserved Font Names "Flowing" and "River", not "Flowing River". You also need to be very careful about reserving font names which are already linked to trademarks (whether registered or not) which you do not own. + +5.6 Do I, as an author, have to identify any Reserved Font Names? +No. RFNs are optional and not required, but we encourage you to use them. This is primarily to avoid confusion between your work and Modified Versions. As an author you can release a font under the OFL and not declare any Reserved Font Names. There may be situations where you find that using no RFNs and letting your font be changed and modified - including any kind of modification - without having to change the original name is desirable. However you need to be fully aware of the consequences. There will be no direct way for end-users and other designers to distinguish your Original Version from many Modified Versions that may be created. You have to trust whoever is making the changes and the optimizations to not introduce problematic changes. The RFNs you choose for your own creation have value to you as an author because they allow you to maintain artistic integrity and keep some control over the distribution channel to your end-users. For discussion of RFNs and web fonts see section 2. + +5.7 Are any names (such as the main font name) reserved by default? +No. That is a change to the license as of version 1.1. If you want any names to be Reserved Font Names, they must be specified after the copyright statement(s). + +5.8 Is there any situation in which I can use Reserved Font Names for a Modified Version? +The Copyright Holder(s) can give certain trusted parties the right to use any of the Reserved Font Names through separate written agreements. For example, even if "Foobar" is a RFN, you could write up an agreement to give company "XYZ" the right to distribute a modified version with a name that includes "Foobar". This allows for freedom without confusion. The existence of such an agreement should be made as clear as possible to downstream users and designers in the distribution package and the relevant documentation. They need to know if they are a party to the agreement or not and what they are practically allowed to do or not even if all the details of the agreement are not public. + +5.9 Do font rebuilds require a name change? Do I have to change the name of the font when my packaging workflow includes a full rebuild from source? +Yes, all rebuilds which change the font data and the smart code are Modified Versions and the requirements of the OFL apply: you need to respect what the Author(s) have chosen in terms of Reserved Font Names. However if a package (or installer) is simply a wrapper or a compressed structure around the final font - leaving them intact on the inside - then no name change is required. Please get in touch with the author(s) and copyright holder(s) to inquire about the presence of font sources beyond the final font file(s) and the recommended build path. That build path may very well be non-trivial and hard to reproduce accurately by the maintainer. If a full font build path is made available by the upstream author(s) please be aware that any regressions and changes you may introduce when doing a rebuild for packaging purposes is your own responsibility as a package maintainer since you are effectively creating a separate branch. You should make it very clear to your users that your rebuilt version is not the canonical one from upstream. + +5.10 Can I add other Reserved Font Names when making a derivative font? +Yes. List your additional Reserved Font Names after your additional copyright statement, as indicated with example placeholders at the top of the OFL.txt file. Be sure you do not remove any existing RFNs but only add your own. RFN statements should be placed next to the copyright statement of the relevant author as indicated in the OFL.txt template to make them visible to designers wishing to make their separate version. + + +6 ABOUT THE FONTLOG + +6.1 What is this FONTLOG thing exactly? +It has three purposes: 1) to provide basic information on the font to users and other designers and developers, 2) to document changes that have been made to the font or accompanying files, either by the original authors or others, and 3) to provide a place to acknowledge authors and other contributors. Please use it! + +6.2 Is the FONTLOG required? +It is not a requirement of the license, but we strongly recommend you have one. + +6.3 Am I required to update the FONTLOG when making Modified Versions? +No, but users, designers and other developers might get very frustrated with you if you don't. People need to know how derivative fonts differ from the original, and how to take advantage of the changes, or build on them. There are utilities that can help create and maintain a FONTLOG, such as the FONTLOG support in FontForge. + +6.4 What should the FONTLOG look like? +It is typically a separate text file (FONTLOG.txt), but can take other formats. It commonly includes these four sections: + +- brief header describing the FONTLOG itself and name of the font family +- Basic Font Information - description of the font family, purpose and breadth +- ChangeLog - chronological listing of changes +- Acknowledgements - list of authors and contributors with contact information + +It could also include other sections, such as: where to find documentation, how to make contributions, information on contributing organizations, source code details, and a short design guide. See Appendix A for an example FONTLOG. + + +7 MAKING CONTRIBUTIONS TO OFL PROJECTS + +7.1 Can I contribute work to OFL projects? +In many cases, yes. It is common for OFL fonts to be developed by a team of people who welcome contributions from the wider community. Contact the original authors for specific information on how to participate in their projects. + +7.2 Why should I contribute my changes back to the original authors? +It would benefit many people if you contributed back in response to what you've received. Your contributions and improvements to the fonts and other components could be a tremendous help and would encourage others to contribute as well and 'give back'. You will then benefit from other people's contributions as well. Sometimes maintaining your own separate version takes more effort than merging back with the original. Be aware that any contributions, however, must be either your own original creation or work that you own, and you may be asked to affirm that clearly when you contribute. + +7.3 I've made some very nice improvements to the font. Will you consider adopting them and putting them into future Original Versions? +Most authors would be very happy to receive such contributions. Keep in mind that it is unlikely that they would want to incorporate major changes that would require additional work on their end. Any contributions would likely need to be made for all the fonts in a family and match the overall design and style. Authors are encouraged to include a guide to the design with the fonts. It would also help to have contributions submitted as patches or clearly marked changes - the use of smart source revision control systems like subversion, mercurial, git or bzr is a good idea. Please follow the recommendations given by the author(s) in terms of preferred source formats and configuration parameters for sending contributions. If this is not indicated in a FONTLOG or other documentation of the font, consider asking them directly. Examples of useful contributions are bug fixes, additional glyphs, stylistic alternates (and the smart font code to access them) or improved hinting. Keep in mind that some kinds of changes (esp. hinting) may be technically difficult to integrate. + +7.4 How can I financially support the development of OFL fonts? +It is likely that most authors of OFL fonts would accept financial contributions - contact them for instructions on how to do this. Such contributions would support future development. You can also pay for others to enhance the fonts and contribute the results back to the original authors for inclusion in the Original Version. + + +8 ABOUT THE LICENSE ITSELF + +8.1 I see that this is version 1.1 of the license. Will there be later changes? +Version 1.1 is the first minor revision of the OFL. We are confident that version 1.1 will meet most needs, but are open to future improvements. Any revisions would be for future font releases, and previously existing licenses would remain in effect. No retroactive changes are possible, although the Copyright Holder(s) can re-release the font under a revised OFL. All versions will be available on our web site: http://scripts.sil.org/OFL. + +8.2 Does this license restrict the rights of the Copyright Holder(s)? +No. The Copyright Holder(s) still retain(s) all the rights to their creation; they are only releasing a portion of it for use in a specific way. For example, the Copyright Holder(s) may choose to release a 'basic' version of their font under the OFL, but sell a restricted 'enhanced' version under a different license. They may also choose to release the same font under both the OFL and some other license. Only the Copyright Holder(s) can do this, and doing so does not change the terms of the OFL as it applies to that font. + +8.3 Is the OFL a contract or a license? +The OFL is a worldwide license based on international copyright agreements and conventions. It is not a contract and so does not require you to sign it to have legal validity. By using, modifying and redistributing components under the OFL you indicate that you accept the license. + +8.4 I really like the terms of the OFL, but want to change it a little. Am I allowed to take ideas and actual wording from the OFL and put them into my own custom license for distributing my fonts? +We strongly recommend against creating your very own unique open licensing model. Using a modified or derivative license will likely cut you off - along with the font(s) under that license - from the community of designers using the OFL, potentially expose you and your users to legal liabilities, and possibly put your work and rights at risk. The OFL went though a community and legal review process that took years of effort, and that review is only applicable to an unmodified OFL. The text of the OFL has been written by SIL (with review and consultation from the community) and is copyright (c) 2005-2017 SIL International. You may re-use the ideas and wording (in part, not in whole) in another non-proprietary license provided that you call your license by another unambiguous name, that you do not use the preamble, that you do not mention SIL and that you clearly present your license as different from the OFL so as not to cause confusion by being too similar to the original. If you feel the OFL does not meet your needs for an open license, please contact us. + +8.5 Can I quote from the OFL FAQ? +Yes, SIL gives permission to quote from the OFL FAQ (OFL-FAQ.txt), in whole or in part, provided that the quoted text is: + +- unmodified, +- used to help explain the intent of the OFL, rather than cause misunderstanding, and +- accompanied with the following attribution: "From the OFL FAQ (OFL-FAQ.txt), copyright (c) 2005-2017 SIL International. Used by permission. http://scripts.sil.org/OFL-FAQ_web". + +8.6 Can I translate the license and the FAQ into other languages? +SIL certainly recognises the need for people who are not familiar with English to be able to understand the OFL and its use. Making the license very clear and readable has been a key goal for the OFL, but we know that people understand their own language best. + +If you are an experienced translator, you are very welcome to translate the OFL and OFL-FAQ so that designers and users in your language community can understand the license better. But only the original English version of the license has legal value and has been approved by the community. Translations do not count as legal substitutes and should only serve as a way to explain the original license. SIL - as the author and steward of the license for the community at large - does not approve any translation of the OFL as legally valid because even small translation ambiguities could be abused and create problems. + +SIL gives permission to publish unofficial translations into other languages provided that they comply with the following guidelines: + +- Put the following disclaimer in both English and the target language stating clearly that the translation is unofficial: + +"This is an unofficial translation of the SIL Open Font License into . It was not published by SIL International, and does not legally state the distribution terms for fonts that use the OFL. A release under the OFL is only valid when using the original English text. However, we recognize that this unofficial translation will help users and designers not familiar with English to better understand and use the OFL. We encourage designers who consider releasing their creation under the OFL to read the OFL-FAQ in their own language if it is available. Please go to http://scripts.sil.org/OFL for the official version of the license and the accompanying OFL-FAQ." + +- Keep your unofficial translation current and update it at our request if needed, for example if there is any ambiguity which could lead to confusion. + +If you start such a unofficial translation effort of the OFL and OFL-FAQ please let us know. + +8.7 Does the OFL have an explicit expiration term? +No, the implicit intent of the OFL is that the permissions granted are perpetual and irrevocable. + + +9 ABOUT SIL INTERNATIONAL + +9.1 Who is SIL International and what do they do? +SIL serves language communities worldwide, building their capacity for sustainable language development, by means of research, translation, training and materials development. SIL makes its services available to all without regard to religious belief, political ideology, gender, race, or ethnic background. SIL's members and volunteers share a Christian commitment. + +9.2 What does this have to do with font licensing? +The ability to read, write, type and publish in one's own language is one of the most critical needs for millions of people around the world. This requires fonts that are widely available and support lesser-known languages. SIL develops - and encourages others to develop - a complete stack of writing systems implementation components available under open licenses. This open stack includes input methods, smart fonts, smart rendering libraries and smart applications. There has been a need for a common open license that is specifically applicable to fonts and related software (a crucial component of this stack), so SIL developed the SIL Open Font License with the help of the Free/Libre and Open Source Software community. + +9.3 How can I contact SIL? +Our main web site is: http://www.sil.org/ +Our site about complex scripts is: http://scripts.sil.org/ +Information about this license (and contact information) is at: http://scripts.sil.org/OFL + + +APPENDIX A - FONTLOG EXAMPLE + +Here is an example of the recommended format for a FONTLOG, although other formats are allowed. + +----- +FONTLOG for the GlobalFontFamily fonts + +This file provides detailed information on the GlobalFontFamily Font Software. This information should be distributed along with the GlobalFontFamily fonts and any derivative works. + +Basic Font Information + +GlobalFontFamily is a Unicode typeface family that supports all languages that use the Latin script and its variants, and could be expanded to support other scripts. + +NewWorldFontFamily is based on the GlobalFontFamily and also supports Greek, Hebrew, Cyrillic and Armenian. + +More specifically, this release supports the following Unicode ranges... +This release contains... +Documentation can be found at... +To contribute to the project... + +ChangeLog + +10 December 2010 (Fred Foobar) GlobalFontFamily-devel version 1.4 +- fix new build and testing system (bug #123456) + +1 August 2008 (Tom Parker) GlobalFontFamily version 1.2.1 +- Tweaked the smart font code (Branch merged with trunk version) +- Provided improved build and debugging environment for smart behaviours + +7 February 2007 (Pat Johnson) NewWorldFontFamily Version 1.3 +- Added Greek and Cyrillic glyphs + +7 March 2006 (Fred Foobar) NewWorldFontFamily Version 1.2 +- Tweaked contextual behaviours + +1 Feb 2005 (Jane Doe) NewWorldFontFamily Version 1.1 +- Improved build script performance and verbosity +- Extended the smart code documentation +- Corrected minor typos in the documentation +- Fixed position of combining inverted breve below (U+032F) +- Added OpenType/Graphite smart code for Armenian +- Added Armenian glyphs (U+0531 -> U+0587) +- Released as "NewWorldFontFamily" + +1 Jan 2005 (Joe Smith) GlobalFontFamily Version 1.0 +- Initial release + +Acknowledgements + +If you make modifications be sure to add your name (N), email (E), web-address (if you have one) (W) and description (D). This list is in alphabetical order. + +N: Jane Doe +E: jane@university.edu +W: http://art.university.edu/projects/fonts +D: Contributor - Armenian glyphs and code + +N: Fred Foobar +E: fred@foobar.org +W: http://foobar.org +D: Contributor - misc Graphite fixes + +N: Pat Johnson +E: pat@fontstudio.org +W: http://pat.fontstudio.org +D: Designer - Greek & Cyrillic glyphs based on Roman design + +N: Tom Parker +E: tom@company.com +W: http://www.company.com/tom/projects/fonts +D: Engineer - original smart font code + +N: Joe Smith +E: joe@fontstudio.org +W: http://joe.fontstudio.org +D: Designer - original Roman glyphs + +Fontstudio.org is an not-for-profit design group whose purpose is... +Foobar.org is a distributed community of developers... +Company.com is a small business who likes to support community designers... +University.edu is a renowned educational institution with a strong design department... +----- + diff --git a/fonts/OFL.txt b/fonts/OFL.txt new file mode 100644 index 0000000..bb86782 --- /dev/null +++ b/fonts/OFL.txt @@ -0,0 +1,94 @@ +Copyright (c) 2019-07-29, Abbie Gonzalez (https://abbiecod.es|support@abbiecod.es), +with Reserved Font Name OpenDyslexic. +Copyright (c) 12/2012 - 2019 +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/fonts/OpenDyslexic-Bold-Italic.eot b/fonts/OpenDyslexic-Bold-Italic.eot new file mode 100644 index 0000000..12eaf99 Binary files /dev/null and b/fonts/OpenDyslexic-Bold-Italic.eot differ diff --git a/fonts/OpenDyslexic-Bold-Italic.otf b/fonts/OpenDyslexic-Bold-Italic.otf new file mode 100644 index 0000000..f58701a Binary files /dev/null and b/fonts/OpenDyslexic-Bold-Italic.otf differ diff --git a/fonts/OpenDyslexic-Bold-Italic.woff b/fonts/OpenDyslexic-Bold-Italic.woff new file mode 100644 index 0000000..2cf3d21 Binary files /dev/null and b/fonts/OpenDyslexic-Bold-Italic.woff differ diff --git a/fonts/OpenDyslexic-Bold-Italic.woff2 b/fonts/OpenDyslexic-Bold-Italic.woff2 new file mode 100644 index 0000000..9e8a5f8 Binary files /dev/null and b/fonts/OpenDyslexic-Bold-Italic.woff2 differ diff --git a/fonts/OpenDyslexic-Bold.eot b/fonts/OpenDyslexic-Bold.eot new file mode 100644 index 0000000..e4d8044 Binary files /dev/null and b/fonts/OpenDyslexic-Bold.eot differ diff --git a/fonts/OpenDyslexic-Bold.otf b/fonts/OpenDyslexic-Bold.otf new file mode 100644 index 0000000..ba0f71d Binary files /dev/null and b/fonts/OpenDyslexic-Bold.otf differ diff --git a/fonts/OpenDyslexic-Bold.woff b/fonts/OpenDyslexic-Bold.woff new file mode 100644 index 0000000..fb4c5b2 Binary files /dev/null and b/fonts/OpenDyslexic-Bold.woff differ diff --git a/fonts/OpenDyslexic-Bold.woff2 b/fonts/OpenDyslexic-Bold.woff2 new file mode 100644 index 0000000..5b52c9c Binary files /dev/null and b/fonts/OpenDyslexic-Bold.woff2 differ diff --git a/fonts/OpenDyslexic-Italic.eot b/fonts/OpenDyslexic-Italic.eot new file mode 100644 index 0000000..2158be8 Binary files /dev/null and b/fonts/OpenDyslexic-Italic.eot differ diff --git a/fonts/OpenDyslexic-Italic.otf b/fonts/OpenDyslexic-Italic.otf new file mode 100644 index 0000000..d28a75c Binary files /dev/null and b/fonts/OpenDyslexic-Italic.otf differ diff --git a/fonts/OpenDyslexic-Italic.woff b/fonts/OpenDyslexic-Italic.woff new file mode 100644 index 0000000..729826b Binary files /dev/null and b/fonts/OpenDyslexic-Italic.woff differ diff --git a/fonts/OpenDyslexic-Italic.woff2 b/fonts/OpenDyslexic-Italic.woff2 new file mode 100644 index 0000000..0df2b97 Binary files /dev/null and b/fonts/OpenDyslexic-Italic.woff2 differ diff --git a/fonts/OpenDyslexic-Regular.eot b/fonts/OpenDyslexic-Regular.eot new file mode 100644 index 0000000..ddb85f5 Binary files /dev/null and b/fonts/OpenDyslexic-Regular.eot differ diff --git a/fonts/OpenDyslexic-Regular.otf b/fonts/OpenDyslexic-Regular.otf new file mode 100644 index 0000000..cda327a Binary files /dev/null and b/fonts/OpenDyslexic-Regular.otf differ diff --git a/fonts/OpenDyslexic-Regular.woff b/fonts/OpenDyslexic-Regular.woff new file mode 100644 index 0000000..ee36500 Binary files /dev/null and b/fonts/OpenDyslexic-Regular.woff differ diff --git a/fonts/OpenDyslexic-Regular.woff2 b/fonts/OpenDyslexic-Regular.woff2 new file mode 100644 index 0000000..4bff419 Binary files /dev/null and b/fonts/OpenDyslexic-Regular.woff2 differ diff --git a/fonts/nostalgiaelements-Regular.otf b/fonts/nostalgiaelements-Regular.otf new file mode 100644 index 0000000..26e55bb Binary files /dev/null and b/fonts/nostalgiaelements-Regular.otf differ diff --git a/fonts/opendyslexic-characters.pdf b/fonts/opendyslexic-characters.pdf new file mode 100644 index 0000000..8f483e6 Binary files /dev/null and b/fonts/opendyslexic-characters.pdf differ diff --git a/fonts/opendyslexic.otf b/fonts/opendyslexic.otf new file mode 100644 index 0000000..cc21a9a Binary files /dev/null and b/fonts/opendyslexic.otf differ diff --git a/googlee0dd5cad48745dc5.html b/googlee0dd5cad48745dc5.html new file mode 100644 index 0000000..a3df049 --- /dev/null +++ b/googlee0dd5cad48745dc5.html @@ -0,0 +1 @@ +google-site-verification: googlee0dd5cad48745dc5.html \ No newline at end of file diff --git a/impliquezvous/index.html b/impliquezvous/index.html new file mode 100644 index 0000000..837c541 --- /dev/null +++ b/impliquezvous/index.html @@ -0,0 +1,175 @@ + + + + + + + + + +Venez ! – GRIP-UQÀM + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ +

Venez !

+
+ +
+ +

Vous désirez vous impliquez au GRIP UQÀM, mais vous ne savez pas par où commencer? Voici une liste des différentes façons possibles de vous joindre à nous.

+
    +
  1. Vous pouvez consulter la liste de nos comités et voir si l’un d’entre eux travail sur un projet qui vous passionne.
  2. +
  3. Vous avez un projet génial qui a des liens avec l’écologie et aucun comité ne semble travailler sur le sujet qui vous passionne ? Contactez-nous ! :)
  4. +
  5. Vous n’êtes toujours pas sûr de comment vous pourriez participer, mais vous bouillonnez d’envie de travailler sur les questions écologiques ? N’hésitez pas à nous écrire !
  6. +
+ + + +
+ +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/index.html b/index.html new file mode 100644 index 0000000..730e810 --- /dev/null +++ b/index.html @@ -0,0 +1,367 @@ + + + + + + + + + +GRIP-UQÀM – À la racine des choses + + + + + + + + + + + + + +
+ + +
+
+
+ + + +
+ +
+
+
+

Coordination

+
+
+

Bannière du GRIP‑UQAM. Elle est orange. Les écritures et dessins dessus sont blancs. D’abord, à gauche et en gros se lit “GRIP‑UQAM”, puis en plus petit à droite “Groupe de Recherche d’Intérêt Public de l’UQAM”. Enfin, au bout à droite se trouve le logo du GRIP, sur fond jaune-orange. Le logo montre la silhouette d’un pissenlit en fleur, avec un feuillage garni avec “GRIP” écrit juste en dessous, d’une écriture de type manuscrite.

+

Logo du GRIP‑UQAM fêtant les 25 ans de l’organisme. Le logo est entièrement blanc. L’écriture est transparente (le fond d’écran est noir). Il s’agit de la silhouette d’un pissenlit en fleur. Ce dernier est planté dans un rond contenant des écritures. Dans le rond se lit “GRIP‑UQAM” au centre et “25 ans” longeant la paroi en bas à droite du cercle. En haut à gauche, à l’extérieur du cercle et en blanc, est écrit “écologie sociale” d’une écriture type manuscrite attachée plutôt ronde. Deux racines dépassent du cercle en bas à gauche et la fleur et une feuille dépassent en haut à droite.Logo du GRIP‑UQAM de forme carrée. Au centre se trouve une silhouette de pissenlit en fleur de couleur vert lime. Au-dessus est du pissenlit est écrit en vert foncé entouré de vert lime: “À la racine des choses” suivi de quatre points de suspension. Des racines de pissenlit sont en arrière-plan de ces mots, dans le coin haut gauche du carré. À droite, écrit à la verticale et en orange se lit l’adresse du site du GRIP, soit “gripuqam.org”. En bas de la fleur, il y a une forme orange presque rectangulaire, comme si elle y était plantée. Il y est écrit “GRIP UQAM” et la tige du pissenlit sort du “i” de GRIP. Tout en bas est écrit en petit “Groupe de Recherche en Intérêt Public de l’UQAM”. L’arrière-plan est transparent (le fond d’écran est noir).Composée de l’équipe des personnes à la co-coordination, du conseil exécutif, du conseil d’administration et des autres personnes qui souhaitent s’y impliquer, la coordination s’occupe des affaires courantes du GRIP, assure une communication avec et entre les comités et organisent des activités d’intérêt général.

+

Joignez-nous ! Écrivez-nous !

+
+ +
+

+
+
+
+

Éducation populaire

+
+
+

Photo en noir et blanc de restes de tiges de pissenlits avec les graines envolées. L’arrière-plan est très lumineux, rendant les pissenlits visibles sous forme de silhouettes noires et un horizon foncé en bas. Le focus est fait sur deux plants de pissenlit au centre avec d’autres plants flous en arrière. Il y aussi un dégradé vers le noir, plus on s’approche du pourtour de l’image.Le comité Éducation populaire organise des « teach-in’s » (journée d’ateliers, podcasts, conférences et discussions) et une banque d’ateliers anticapitalistes pour rassembler et renforcer les différents groupes et mouvement anticapitalistes de Montréal, dans une perspective d’éducation populaire.

+
+ +
+

+
+
+

Médi@s Libres

+
+
+

Image du site infos.media, écrit en blanc en haut. Plus bas est écrit “Intégrateur de médias indépendants”. L’arrière-plan est majoritairement noir, avec des effets de lumières flous.

+

Icône de Médias Libres de forme carrée. Le fond est rouge. À l’avant-plan, il y a un porte-voix en blanc avec contours noirs dont sort une bulle de dialogue dans laquelle est écrit “Médi@s Libres” en noir, épelé avec un “a” commercial. Sous le porte-voix est écrit “Collectif médiatique d’autodéfense communicationnelle et d’intervention sociale”.Médias Libres est un collectif de médias alternatifs qui vise à promouvoir des discours médiatiques alternatifs. Nous travaillons tant à la production, qu’à la diffusion de projets médiatiques porteurs d’une perspective originale et critique. Nous oeuvrons également au réseautage des médias indépendants. Notre démarche est inclusive et nous croyons à l’échange de connaissances et à l’horizontalité des rapports interpersonnels.

+

Icône de Projections Insurgées, de forme ronde. À l’intérieur d’un cercle noir rempli de blanc se trouve un corbeau, aux plumes noir-bleuté avec éclats jaunes sur ses ailes déployées, vêtu d’un habit bleu avec un harnais et muni d’une lampe de projection cinématographique frontale. À l’avant-plan est écrit en rose “P I”.Activités:

+
    +
  • Projections insurgées! Soirées de diffusion de films radicaux;
  • +
  • Développement du portail INFOS.media rassemblant a une seule adresse une constellations de médias d’information indépendants;
  • +
  • Fonds discrétionnaire d’aide aux médias indépendants;
  • +
  • Productions audiovisuelles, ateliers cinématographiques, ciné-débats et bien plus!
  • +
+
+ +
+

+
+
+

Projet Accompagnement Solidarité Colombie (PASC)

+
+
+

Bannière du PASC. À l’avant-plan est écrit en blanc “Projet Accompagnement Solidarité Colombie”. L’arrière-plan montre un dégradé entre trois images. À gauche se trouve quelqu’un debout pagayant une embarcation avec des contenants bleus. Au centre se trouve une forêt aux arbres épars. À droite se trouve une manifestation du 1er mai avec des gens tenant une pancarte en espagnol dont la majorité est cachée par le mot “Colombie” à l’avant-plan.

+

Icône du PASC de forme rectangulaire. À l’avant-plan est écrit “PASC” dans une typographie de type dactylo. Au centre en arrière-plan se trouve la silhouette grise du territoire de la Colombie. Celui-ci est entouré d’un cercle, lequel sert de pupille à l’image globale d’œil formée avec les écrits en courbe en haut et en bas. En haut est écrit “Pour la défense de la vie, la dignité et l’autonomie”. En bas est écrit “Projet accompagnement solidarité Colombie”. En arrière-plan, à gauche, se trouve un dessin en silhouette de la face d’une personne avec moustache portant un sombrero, puis, à droite, se trouve un dessin en silhouette d’une personne en robe dansant, une main sur la hanche et l’autre dans les airs.Le Projet Accompagnement Solidarité Colombie (PASC) est un collectif anticolonial et féministe basé au « Québec » qui réalise de l’accompagnement auprès de communautés et organisations colombiennes, tout en dénonçant les intérêts canadiens impliqués dans le conflit social et armé en Colombie. Nous faisons des liens entre des luttes ici et là-bas contre l’imposition de projets d’extraction des ressources.

+
+ +
+

+ +
+
+

SOS Territoire

+
+
+

Logo de SOS Territoire: Dessins en blanc sur arrière-plan noir. Un SOS sur des vagues avec la prolongation de la base du premier S vers sa gauche formant une butte d’où jaillissent deux arbres conifères, un plus petit à gauche et un plus grand à droite. Sous l’eau il est écrit “Territoire”. Les deux S de SOS sont plus hauts que le O qui est parfaitement rond.Toile peinte par l’artiste atikamekw Jacques Newashish lors de Mitshetuteuat II pour l’Alliance Mamo. Chi Miigwetch Monsieur Newashish ! La peinture montre trois longues perches en noir attachées ensemble dont la plus haute au centre se termine par un drapeau rouge avec un cercle séparé en quatre couleurs, dans le sens horaire à partir du coin bas droit : rouge, noir, blanc jaune. Derrière les perches il y a trois bandes, une grande bande jaune en haut, puis une bande bleue marqué de traits diagonaux blancs et noirs, puis une mince bande jaune tout en bas avec des silhouettes en noir tout d’abord humaines, soit une petite personne, puis une minuscule personne qui tient la main d’une personne portant une jupe, une autre personne sans jupe, puis deux silhouettes d’animaux se dirigeant vers les personnes, soit un petit mammifère en longueur et plus loin un plus gros quadrupède avec une flèche vers la droite, suivi d’un oiseau plus haut, puis d’une branche avec deux feuilles opposées et une feuille terminale et enfin un cercle entourant un w avec quatre traits s’éloignant. Un demi-cercle bleu ciel traverse le centre de la toile sous les perches en s’ouvrant vers le haut Une bande bleue sous la toile est couverte d’un motif noir à demi-cercle ouvert vers le bas avec un point au centre.SOS Territoire est un comité du GRIP-UQAM et un groupe de recherche et d’action pour la protection du territoire dans une perspective d'écologie sociale en visant un rapprochement entre les autochtones et non-autochtones, notamment à travers l’Alliance Mamo en construction.

+

L'Alliance Mamo (Mamo veut dire « ensemble » en atikamekw nehiromowin) est un projet porté par SOS Territoire. L'Alliance Mamo se veut un réseau d’action et de communication entre Autochtones et Allochtones pour la défense de la biodiversité et contre le colonialisme. La toile ci-contre a été réalisée par l’artiste atikamekw Jacques Newashish lors de Mitshetuteuat II pour l’Alliance Mamo. Megwetch Monsieur Newashish ! +

+Le territoire en péril est considéré sous ses diverses formes - forêts, rivières et lacs, sous-sol, terres cultivables, environnement rural ou urbain - incluant ses habitant·es : animales/animaux, humain·es et végétaux/végétales. Les communautés des Premiers Peuples sont des témoins privilégié·es de l’état des territoires soi-disant « non habités ». Souvent les premières victimes humaines de la destruction de ces écosystèmes auxquels leur identité traditionnelle est inextricablement liée, les Autochtones sont des allié·es essentiel·les de l'écologie sociale afin de se diriger vers une société écologique et conviviale. +

+Au sein du GRIP-UQAM, et lorsque possible en partenariat avec d'autres comités tels Anarchives et le PASC ou encore le Cercle des Premières Nations de l'UQAM (CPNUQAM), le comité SOS Territoire travaille sur l'aspect anticolonial de l'écologie sociale, notamment à travers le support matériel (nourriture, transport, audiovisuel) et organisationnel (traduction, partage des connaissances, mise en contact entre écologistes Autochtones et Allochtones) en collaboration avec les Autochtones écologistes, ainsi qu'en partageant et en diffusant les recherches et l'information anticoloniales et écologistes par des ateliers et des conférences. +

+À l'initiative de SOS Territoire, le GRIP-UQAM alloue une partie de son budget pour financer les initiatives autochtones à travers le Cercle Aiatshitau Mamu (Luttons Ensemble) qui s’engage à encourager les projets menés surtout par des autochtones pour la protection des terres sacrées de l’Île de la Tortue et des projets de décolonisation / justice sociale / libération juridique pour les Premiers Peuples. Le montant amassé sera distribué à différents projets par les membres (exclusivement autochtones) du Cercle. +

+SOS Territoire et le CPNUQAM ont des missions complémentaires et distinctes. Alors que le CPNUQAM soutien l'intégration et le cheminement des étudiant·es autochtones à la vie universitaire en milieu urbain, promouvoit et diffuse les cultures autochtones et les réalités que vivent les Premiers Peuples et établit des liens d'amitié et de coopération entre les Autochtones et les Allochtones, SOS Territoire éveille les étudiant·es de l'UQAM ainsi que la communauté uqamienne aux enjeux écologiques et anticoloniaux. Nous encourageons les alliances avec des autochtones, particulièrement autour des enjeux écologiques, et nous travaillons, sur demande des communautés autochtones, à fournir du soutien pratique et académique aux écologistes autochtones qui protègent leurs territoires ancestraux et aux Autochtones et Allochtones de la communauté uqamienne qui les appuient. +

+Afin de pouvoir travailler avec le CPNUQAM, SOS Territoire utilise leur méthode de fonctionnement par consensus. Notre plus grosse collaboration à ce jour avec le CPNUQAM sont les rencontres Mitshetuteuat I à la chaufferie de l'UQAM en avril 2014 et Mitshetuteuat II à Wemotaci en septembre 2015, d'où est née l'Alliance Mamo, projet que nous portons depuis cette rencontre. +

+SOS Territoire est membre des regroupements écologistes suivants : le Front commun pour une transition énergétique et le Réseau Québécois des Groupes Écologistes (RQGE). Nous travaillons fort pour y apporter une perspective anticoloniale. +

+

Liens du comité SOS Territoire : +

+

+

Liens pour Mitshetuteuat I : +

+

+

Liens pour Mitshetuteuat II : +

+

+
+ +
+

+
+
+

Stasis

+
+
+

Bannière de Stasis, en noir et blanc. Une photo d’un panorama de l’horizon à l’envers de sorte que le ciel plus pâle est en bas et la terre rocailleuse est en haut. En bas, dans le ciel, est écrit en noir “Groupe d’enquête sur le contemporain”.

+

Icône de Stasis de forme carrée. “Stasis” est écrit en avant-plan, en blanc d’un typographie de type calligraphie. L’arrière-plan est une photo d’horizon à l’envers, de sorte que le ciel pâle est en bas et la terre rocailleuse est en haut. Stasis : Groupe d’enquête sur le contemporain entend, par l’organisation de divers événements, approfondir ce qui forme l’étoffe des résistances politiques d’aujourd’hui. Un lieu commun où la confrontation entre différentes positions favorise l’élaboration d’une perception commune de la situation. Un espace de création et de réflexion qui vise à élucider ce que seraient une ou des révolutions à notre époque. La rédaction d’une revue permettra ultimement de récapituler les enjeux et les thématiques discutés tout au long de l’année.

+
+ +
+
+
+
+
+
+ +
+ + diff --git a/non-a-leviction.jpg b/non-a-leviction.jpg new file mode 100644 index 0000000..740d5f7 Binary files /dev/null and b/non-a-leviction.jpg differ diff --git a/nouvelles/index.html b/nouvelles/index.html new file mode 100644 index 0000000..9b4ae00 --- /dev/null +++ b/nouvelles/index.html @@ -0,0 +1,461 @@ + + + + + + + + + +Nouvelles – GRIP-UQÀM + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + + + + + +
+ + +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+
+ + + +
+ + + + +
+ + + + diff --git a/nouvelles/page/2/index.html b/nouvelles/page/2/index.html new file mode 100644 index 0000000..6e7001e --- /dev/null +++ b/nouvelles/page/2/index.html @@ -0,0 +1,479 @@ + + + + + + + + + +Nouvelles – Page 2 – GRIP-UQÀM + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + + + + + +
+ + +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+
+ + + +
+ + + + +
+ + + + diff --git a/nouvelles/page/3/index.html b/nouvelles/page/3/index.html new file mode 100644 index 0000000..9a179d8 --- /dev/null +++ b/nouvelles/page/3/index.html @@ -0,0 +1,448 @@ + + + + + + + + + +Nouvelles – Page 3 – GRIP-UQÀM + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + + + + + +
+ + +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+
+ + + +
+ + + + +
+ + + + diff --git a/nouvelles/page/4/index.html b/nouvelles/page/4/index.html new file mode 100644 index 0000000..a8ca879 --- /dev/null +++ b/nouvelles/page/4/index.html @@ -0,0 +1,441 @@ + + + + + + + + + +Nouvelles – Page 4 – GRIP-UQÀM + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + + + + + +
+ + +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+
+ + + +
+ + + + +
+ + + + diff --git a/nouvelles/page/5/index.html b/nouvelles/page/5/index.html new file mode 100644 index 0000000..b2035fc --- /dev/null +++ b/nouvelles/page/5/index.html @@ -0,0 +1,442 @@ + + + + + + + + + +Nouvelles – Page 5 – GRIP-UQÀM + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + + + + + +
+ + +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+
+ + + +
+ + + + +
+ + + + diff --git a/nouvelles/page/6/index.html b/nouvelles/page/6/index.html new file mode 100644 index 0000000..e75896b --- /dev/null +++ b/nouvelles/page/6/index.html @@ -0,0 +1,441 @@ + + + + + + + + + +Nouvelles – Page 6 – GRIP-UQÀM + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + + + + + +
+ + +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+
+ + + +
+ + + + +
+ + + + diff --git a/nouvelles/page/7/index.html b/nouvelles/page/7/index.html new file mode 100644 index 0000000..c9f5ae0 --- /dev/null +++ b/nouvelles/page/7/index.html @@ -0,0 +1,440 @@ + + + + + + + + + +Nouvelles – Page 7 – GRIP-UQÀM + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + + + + + +
+ + +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+
+ + + +
+ + + + +
+ + + + diff --git a/nouvelles/page/8/index.html b/nouvelles/page/8/index.html new file mode 100644 index 0000000..afc2ebe --- /dev/null +++ b/nouvelles/page/8/index.html @@ -0,0 +1,438 @@ + + + + + + + + + +Nouvelles – Page 8 – GRIP-UQÀM + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + + + + + +
+ + +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+
+ + + +
+ + + + +
+ + + + diff --git a/nouvelles/page/9/index.html b/nouvelles/page/9/index.html new file mode 100644 index 0000000..4ae044e --- /dev/null +++ b/nouvelles/page/9/index.html @@ -0,0 +1,359 @@ + + + + + + + + + +Nouvelles – Page 9 – GRIP-UQÀM + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + + + + + +
+ + +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+
+ + + +
+ + + + +
+ + + + diff --git a/remboursements.docx b/remboursements.docx new file mode 100644 index 0000000..bd0ce69 Binary files /dev/null and b/remboursements.docx differ diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..318eaca --- /dev/null +++ b/robots.txt @@ -0,0 +1,10 @@ +# Static website + +Sitemap: https://gripuqam.org/wp-sitemap.xml +Sitemap: https://gripuqam.org/wp-sitemap-posts-post-1.xml +Sitemap: https://gripuqam.org/wp-sitemap-posts-page-1.xml +Sitemap: https://gripuqam.org/wp-sitemap-taxonomies-category-1.xml +Sitemap: https://gripuqam.org/wp-sitemap-taxonomies-post_tag-1.xml + +User-agent: * +Allow: / diff --git a/subventions/index.html b/subventions/index.html new file mode 100644 index 0000000..73e7c70 --- /dev/null +++ b/subventions/index.html @@ -0,0 +1,187 @@ + + + + + + + + + +Subventions – GRIP-UQÀM + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ + +
+ + +
+ +
+
Le GRIP-UQAM est intéressé à discuter de collaborations mutuellement avantageuses avec réciprocité respectant les attentes suivantes afin d'assurer la continuation du GRIP-UQAM et le bien-être des personnes y oeuvrant :
+

+

    +
  • Adopter par votre collectif les valeurs, principes, mission et objectifs du GRIP-UQAM.
  • +
  • Organiser au moins une activité basée à l'UQAM ou à proximité immédiate d'un campus ou pavillon de l'UQAM.
  • +
  • Être un collectif d'au moins trois (3) personnes, ne pas avoir de lien avec des partis politiques, ne pas être une organisation à but lucratif, ni vouloir faire du profit, ne pas avoir accès à des subventions des gouvernements, des entreprises, des industries, des municipalités ou d'autres sources de financement conventionnelles.
  • +
  • Agir selon un plan pour inclure dans votre collectif des personnes étudiant ou travaillant à l'UQAM.
  • +
  • Ajouter les événements dans un calendrier commun pour permettre la diffusion et savoir facilement ce que fait et finance le GRIP, ses comités et autres projets subventionnés et alliés.
  • +
  • Soumettre toutes les informations pour inclure les activités avec la demande de reconnaissance du GRIP-UQAM aux instances de l'UQAM (qui devront être soumises avant tout remboursement).
  • +
  • Inclure l'aide du GRIP-UQAM dans vos pages à propos et l'historique des sites web de votre collectif avec un lien au site gripuqam.org.
  • +
  • Inclure le nom et logo du GRIP-UQAM sur tout le matériel promotionnel des activités financées et donner une visibilité visuelle (nom et logo, affiche et tracts) lors des activités virtuelles et en présentiel.
  • +
  • Inclure des présentations verbales du GRIP-UQAM lors des activités financées expliquant brièvement le GRIP-UQAM, les initiatives qui existent grâce au financement du GRIP-UQAM et inciter les personnes participantes à transmettre aux personnes de leur connaissances étudiant ou travaillant à l'UQAM que le GRIP-UQAM mérite leur soutient et implication si cela est dans leurs capacités afin de favoriser la viabilité à long terme du GRIP-UQAM.
  • +
  • Lorsque des installations temporaires ou permanentes se font avec la subvention du GRIP-UQAM, un marqueur (ex : panneau, plaque) est installé pour signifier la contribution du GRIP-UQAM.
  • +
  • Écrire une lettre d'appui au GRIP-UQAM et ses comités pour continuer à recevoir son financement.
  • +
  • Fonctionner par remboursement de factures (aucune avance de fonds), fournir les factures originales (pas relevés de carte) en suivant les modalités de remboursement.
  • +
  • Les dépenses liées à ce qui suit ne sont pas remboursées : alcool, achat capitalisable (400$ et plus) qui n'est pas rendu disponible de façon permanente aux membres du GRIP-UQAM, loyers, locations qui ne sont pas pour des événements précis, immobilier, salaires, honoraires professionnels, coûts de fonctionnement ou d'exploitation.
  • +
+

+

+Pour discuter de telles collaborations contactez-nous par courriel avec des informations sur votre collectif et sur votre projet en nous proposant des dates, heures et lieux (en ligne sur jitsi ou en personne à un lieu qui vous irait, par exemple dans les locaux du GRIP-UQAM) pour nous rencontrer. +

+ + +
+ +
+ +
+
+ + + +
+ + + + +
+ + + + diff --git a/tag/aliments-dici/index.html b/tag/aliments-dici/index.html new file mode 100644 index 0000000..2281bdf --- /dev/null +++ b/tag/aliments-dici/index.html @@ -0,0 +1,189 @@ + + + + + + + + + +aliments d’ici – GRIP-UQÀM + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + + +
+ + +
+ + + +
+ +
+ + + +
+
+ + + +
+ + + + +
+ + + + diff --git a/tag/antispecisme/index.html b/tag/antispecisme/index.html new file mode 100644 index 0000000..9c7e152 --- /dev/null +++ b/tag/antispecisme/index.html @@ -0,0 +1,189 @@ + + + + + + + + + +antispécisme – GRIP-UQÀM + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + + +
+ + +
+ + + +
+ +
+ + + +
+
+ + + +
+ + + + +
+ + + + diff --git a/tag/cetace/index.html b/tag/cetace/index.html new file mode 100644 index 0000000..1205691 --- /dev/null +++ b/tag/cetace/index.html @@ -0,0 +1,189 @@ + + + + + + + + + +Cétacé – GRIP-UQÀM + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + + +
+ + +
+ + + +
+ +
+ + + +
+
+ + + +
+ + + + +
+ + + + diff --git a/tag/coordination/index.html b/tag/coordination/index.html new file mode 100644 index 0000000..da08b95 --- /dev/null +++ b/tag/coordination/index.html @@ -0,0 +1,189 @@ + + + + + + + + + +coordination – GRIP-UQÀM + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + + +
+ + +
+ + + +
+ +
+ + + +
+
+ + + +
+ + + + +
+ + + + diff --git a/tag/crapaud/index.html b/tag/crapaud/index.html new file mode 100644 index 0000000..e9903c3 --- /dev/null +++ b/tag/crapaud/index.html @@ -0,0 +1,189 @@ + + + + + + + + + +crapaud – GRIP-UQÀM + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + + +
+ + +
+ + + +
+ +
+ + + +
+
+ + + +
+ + + + +
+ + + + diff --git a/tag/emploi-2/index.html b/tag/emploi-2/index.html new file mode 100644 index 0000000..e487f5b --- /dev/null +++ b/tag/emploi-2/index.html @@ -0,0 +1,189 @@ + + + + + + + + + +emploi – GRIP-UQÀM + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + + +
+ + +
+ + + +
+ +
+ + + +
+
+ + + +
+ + + + +
+ + + + diff --git a/tag/medis-libres/index.html b/tag/medis-libres/index.html new file mode 100644 index 0000000..9c8b56e --- /dev/null +++ b/tag/medis-libres/index.html @@ -0,0 +1,189 @@ + + + + + + + + + +medi@s libres – GRIP-UQÀM + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + + +
+ + +
+ + + +
+ +
+ + + +
+
+ + + +
+ + + + +
+ + + + diff --git a/tag/specisme/index.html b/tag/specisme/index.html new file mode 100644 index 0000000..b77fe14 --- /dev/null +++ b/tag/specisme/index.html @@ -0,0 +1,189 @@ + + + + + + + + + +spécisme – GRIP-UQÀM + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + + +
+ + +
+ + + +
+ +
+ + + +
+
+ + + +
+ + + + +
+ + + + diff --git a/tag/vegane/index.html b/tag/vegane/index.html new file mode 100644 index 0000000..5ff86d1 --- /dev/null +++ b/tag/vegane/index.html @@ -0,0 +1,189 @@ + + + + + + + + + +vegane – GRIP-UQÀM + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + + +
+ + +
+ + + +
+ +
+ + + +
+
+ + + +
+ + + + +
+ + + + diff --git a/tag/veganisme/index.html b/tag/veganisme/index.html new file mode 100644 index 0000000..cad8650 --- /dev/null +++ b/tag/veganisme/index.html @@ -0,0 +1,189 @@ + + + + + + + + + +véganisme – GRIP-UQÀM + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + + + +
+ + +
+ + + +
+ +
+ + + +
+
+ + + +
+ + + + +
+ + + + diff --git a/terresnoncedees/1492 Land Back Lane.jpg b/terresnoncedees/1492 Land Back Lane.jpg new file mode 100644 index 0000000..685ea8a Binary files /dev/null and b/terresnoncedees/1492 Land Back Lane.jpg differ diff --git a/terresnoncedees/Akwasasne Landback Language Camp.jpg b/terresnoncedees/Akwasasne Landback Language Camp.jpg new file mode 100644 index 0000000..cbe004a Binary files /dev/null and b/terresnoncedees/Akwasasne Landback Language Camp.jpg differ diff --git a/terresnoncedees/Collectif_Mashk_Assi.jpg b/terresnoncedees/Collectif_Mashk_Assi.jpg new file mode 100644 index 0000000..fffe433 Binary files /dev/null and b/terresnoncedees/Collectif_Mashk_Assi.jpg differ diff --git a/terresnoncedees/Fairy-Creek-Deferral-map.jpg b/terresnoncedees/Fairy-Creek-Deferral-map.jpg new file mode 100644 index 0000000..17dc570 Binary files /dev/null and b/terresnoncedees/Fairy-Creek-Deferral-map.jpg differ diff --git a/terresnoncedees/GINIW.jpg b/terresnoncedees/GINIW.jpg new file mode 100644 index 0000000..995d3b0 Binary files /dev/null and b/terresnoncedees/GINIW.jpg differ diff --git a/terresnoncedees/Kahnawake-parcel-E.jpg b/terresnoncedees/Kahnawake-parcel-E.jpg new file mode 100644 index 0000000..9ca4689 Binary files /dev/null and b/terresnoncedees/Kahnawake-parcel-E.jpg differ diff --git a/terresnoncedees/Kanehsatake.jpg b/terresnoncedees/Kanehsatake.jpg new file mode 100644 index 0000000..498104c Binary files /dev/null and b/terresnoncedees/Kanehsatake.jpg differ diff --git a/terresnoncedees/Matawinie_Ekoni_Aci.webp b/terresnoncedees/Matawinie_Ekoni_Aci.webp new file mode 100644 index 0000000..9d51570 Binary files /dev/null and b/terresnoncedees/Matawinie_Ekoni_Aci.webp differ diff --git a/terresnoncedees/Protect_the_Moose.jpg b/terresnoncedees/Protect_the_Moose.jpg new file mode 100644 index 0000000..85e6b2e Binary files /dev/null and b/terresnoncedees/Protect_the_Moose.jpg differ diff --git a/terresnoncedees/Reconciliation_is_Dead.jpg b/terresnoncedees/Reconciliation_is_Dead.jpg new file mode 100644 index 0000000..9668f5e Binary files /dev/null and b/terresnoncedees/Reconciliation_is_Dead.jpg differ diff --git a/terresnoncedees/Saulnierville.webp b/terresnoncedees/Saulnierville.webp new file mode 100644 index 0000000..bc66281 Binary files /dev/null and b/terresnoncedees/Saulnierville.webp differ diff --git a/terresnoncedees/StopLine3-TAKE+ACTION.png b/terresnoncedees/StopLine3-TAKE+ACTION.png new file mode 100644 index 0000000..78fa586 Binary files /dev/null and b/terresnoncedees/StopLine3-TAKE+ACTION.png differ diff --git a/terresnoncedees/Treaty Truck House Against Alton Gas.jpg b/terresnoncedees/Treaty Truck House Against Alton Gas.jpg new file mode 100644 index 0000000..cb67462 Binary files /dev/null and b/terresnoncedees/Treaty Truck House Against Alton Gas.jpg differ diff --git a/terresnoncedees/Unist’ot’en.jpg b/terresnoncedees/Unist’ot’en.jpg new file mode 100644 index 0000000..d6542e4 Binary files /dev/null and b/terresnoncedees/Unist’ot’en.jpg differ diff --git a/terresnoncedees/Wet'suwet'en.jpg b/terresnoncedees/Wet'suwet'en.jpg new file mode 100644 index 0000000..6686110 Binary files /dev/null and b/terresnoncedees/Wet'suwet'en.jpg differ diff --git a/terresnoncedees/Wiigwaasikaa.jpg b/terresnoncedees/Wiigwaasikaa.jpg new file mode 100644 index 0000000..d6e17e9 Binary files /dev/null and b/terresnoncedees/Wiigwaasikaa.jpg differ diff --git a/terresnoncedees/YIWA.jpg b/terresnoncedees/YIWA.jpg new file mode 100644 index 0000000..81a1548 Binary files /dev/null and b/terresnoncedees/YIWA.jpg differ diff --git a/terresnoncedees/Ya’nienhonhndeh.jpg b/terresnoncedees/Ya’nienhonhndeh.jpg new file mode 100644 index 0000000..da6bd72 Binary files /dev/null and b/terresnoncedees/Ya’nienhonhndeh.jpg differ diff --git a/terresnoncedees/environmental-racism.webp b/terresnoncedees/environmental-racism.webp new file mode 100644 index 0000000..75271d0 Binary files /dev/null and b/terresnoncedees/environmental-racism.webp differ diff --git a/terresnoncedees/freethefalls_logo.svg b/terresnoncedees/freethefalls_logo.svg new file mode 100644 index 0000000..040f405 --- /dev/null +++ b/terresnoncedees/freethefalls_logo.svg @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/terresnoncedees/index.html b/terresnoncedees/index.html new file mode 100644 index 0000000..4e1db8f --- /dev/null +++ b/terresnoncedees/index.html @@ -0,0 +1,719 @@ + + + + + + + + + +Mouvements Onkwehón:we pour leur souveraineté et la protection des territoires + + + + + + + + + + + + + + +
+ + +
+
+
+ +
+
+

Mouvements Onkwehón:we pour leur souveraineté et la protection des territoires

+
+
+
+ +

+

+Onkwehón:we :  Autochtones / vraies personnes . Ce mot signifie littéralement  peuple faisant éternellement partie de la création , de  la voie originale ,  la voie de toujours  ou  la voie de la création , ón:kwe signifiant  humain  et on:we signifiant  pour toujours . Quant à lui, le terme onkwehón:we:néha référence à la langue, aux coutumes et aux modes de vie des Autochtones, tandis que Onkwehón:wè:keh fait référence à leur terre. +
+Cette citation provient du livre La Mohawk Warrior Society - Manuel de Souveraineté Autochtone - Oeuvres choisies de Louis Karoniaktajeh Hall, page 424, édition préparée par Philippe Blouin, Matt Peterson, Malek Rasamny et Kahentinetha Rotiskarewake.

+

Pour acheter la version en anglais : The Mohawk Warrior Society: A Handbook on Sovereignty and Survival.

+

Voir aussi le guide de prononciation en kanien’kéha (langue mohawk) par l'actrice Kaniehtiio Horn, qui a accepté de donner la prononciation correcte de près d'une centaine de mots autochtones se trouvant dans l’ouvrage La Mohawk Warrior Society. Manuel de souveraineté autochtone. +

+
+ +
+
+

Cercle Aiatshitau Mamu

+
+

+Le Cercle Aiatshitau Mamu (Luttons Ensemble) s’engage à encourager les projets et les luttes menés par des autochtones dont le but est de recourir à une justice sociale. Le montant amassé sera distribué à différents projets par les membres (exclusivement autochtones) du Cercle. +

+Le Cercle Aiatshitau Mamu s'est constitué dans la continuation du projet de l'Alliance Mamo en construction portée par SOS Territoire depuis Mitshetuteuat II (qui se tenait à Wemotaci en septembre 2015) permettant de financer et de lier des luttes en cours des Premiers Peuples. Le GRIP-UQAM supporte et finance son comité SOS Territoire et le Cercle. +

+Les projets pouvant être financés doivent convenir à différents critères. Le montant ne doit pas servir à financer des projets menés par les gouvernements ou ses disciples, les conseils de bande. Il ne devra pas non plus être donné à des projets qui sont déjà financés par un conseil de bande ou tout institut gouvernemental. +

+La moitié du budget annuel devra servir à des projets de protection des terres sacrés de l’Île de la Tortue dirigés par les Premiers Peuples. +

+L’autre moitié du budget annuel devra être dépensée pour des projets de décolonisation / justice sociale / libération juridique pour les Premiers Peuples dirigés par les Premiers Peuples. +

+Un petit montant du budget annuel pourra être versé pour un projet qui n’est pas mené par un/des autochtone/s, mais ayant des objectifs semblables à la protection d’Assi ou la libération des Premiers Peuples. +

+Pour soumettre une demande de financement SVP écrire à Aiatshitau-Mamu@lists.mayfirst.org en incluant : +

    +
  • Comment la demande remplit les objectifs du Cercle.
  • +
  • Une description du collectif (et type de collectif) qui fait la demande et sa place dans la communauté.
  • +
  • Le détail des dépenses à rembourser par catégorie (nourriture, transport, matériel par type, etc.)
  • +
  • Le financement fonctionne par remboursement de factures après avoir fait les dépenses, des images nettes des factures complètes devront être envoyées au GRIP-UQAM avant de recevoir l'argent.
  • +
+

+

+
+ +
+
+
+

Liste (non-exhaustive) des mouvements des Premiers Peuples en lutte pour leur souveraineté et la protection des territoires

+
+
+

Nous avons fait une liste à compléter des différentes luttes actuelles pour le retour des terres, et donc de protection de l'environnement. Les luttes autochtones et en alliance sont multiples et ne sont pas toutes documentées ici, notamment contre le racisme systémique, contre le génocide que subissent les femmes, les filles et les personnes 2SLGBTQQIA+++ autochtones, contre le colonialisme médical (comme pour Joyce Echaquan et les autres)...

+ +

Si vous connaissez d'autres luttes des Premiers Peuples pour le retour des terres, n'hésitez pas nous en aviser à <landback@gripuqam.org>. Merci !

+ +

Pour avoir une idée des territoires traditionnels, vous pouvez regarder le lien suivant, en gardant à l'esprit que cette carte ne représente pas et n'a pas l'intention de représenter les frontières officielles ou légales des nations autochtones.
https://native-land.ca/

+ +

Liste des luttes sur cette page: +

+

+ +

Cartes des mines du soi-disant Québec : Carte interactive / Carte format pdf

+ +
+

+ +
+

+
+

Stop Galt en alliance avec le 7th District Tribal Council of Gespegawagi

+
+
+

Quoi : Campagne de financement pour l’affirmation en cour de la souveraineté mi’gmaq et de la protection de l’environnement contre le projet Galt de Énergies Gaspé/Ressources Utica.

+ +

(Le GRIP-UQAM en accord avec le 7th District Tribal Council of Gespegawagi est responsable de la campagne de financement.)

+ +

Durant l’été 2017, s’est formée une alliance importante pour la protection des rivières et de la vie d’une manière générale contre l’industrie pétrolière sur le territoire mi’gmaq du 7th District Tribal Council of Gespegawagi, instance souveraine et traditionnelle Mi’gmaq dont le territoire va du Bas Saint-Laurent à la rivière Miramichi, plus particulièrement dans la partie appelée la péninsule gaspésienne, Gaspésie.

+ +

Des liens cruciaux se sont formés entre les gardien·ne·s mi’gmaq du territoire du 7th District Tribal Council of Gespegawagi qui a délivré une injonction comprenant un interdit d’entrée par effraction à Junex et plusieurs résistant·e·s qui ont bloqué les puits de Galt ainsi que d’autres qui ont tenu un camp d’information et de solidarité, Camp de la rivière. C’est ce que nous appelons dans ce contexte l’Alliance.

+ +

Rares sont les expériences où nous avons vu une si grande action et cohérence entre des personnes allochtones et autochtones dont en premier lieu le Premier Peuple Mi’gmaq, le protecteur du territoire depuis des millénaires.

+ +

L’Alliance a tellement frappé fort que Junex cette année-là n’a pas pu commencer ses forages tels que prévus et qu’elle a vendu ses licences qui sont passées d’une compagnie à l’autre depuis et sans qu’aucune d’entre elles ne puisse extraire.

+ +

Présentement, il y a une bataille en cour entre Gaspé Énergies Inc., une filiale de la compagnie autrichienne Ressources Utica qui conteste le refus d’une demande d’autorisation de forage dans la propriété Galt, en Gaspésie et le Ministère de l'Énergie et des Ressources naturelles du gouvernement du Québec. Elle veut s’imposer là où les autres ont heureusement échoué.

+ +

Quand l’Alliance s’est formée et de grandes batailles ont été menées à l’été 2017 qui ont mené à l’arrêt des travaux de forage au site Galt en Gespegawagi, nous l’avons fait collectivement dans l’esprit de la souveraineté plusieurs fois millénaire mi’gmaq ainsi que de la protection de notre environnement commun et nous n’avons pas l’intention d’abdiquer à ce combat commun pour la préservation de la biodiversité des prochaines générations et la décolonisation de nos relations !

+ +

Dans les temps prochains, le 7th District Tribal Council of Gespegawagi sera appelé à intervenir en cour et à réitérer sa souveraineté et son refus du projet Galt d’Énergies Gaspé/Ressources Utica. Pour ce faire, nous avons besoin de votre aide et de celle de tous vos groupes pour honorer l’Alliance et payer les frais juridiques encourus.

+ +

Soyez dans l’Alliance avec nous pour la souveraineté mi’gmaq et notre environnement commun !!!

+ +

Où : Gespegawagi, 7e district du Miꞌkmaꞌki (soi-disante "Gaspésie")

+ +

Qui : Alliance 7th District Tribal Council of Gespegawagi et allié·e·s

+ +

Liens : https://www.facebook.com/stopgaltenalliance/ https://www.gofundme.com/f/stop-galt-en-alliance

+
+

+
+

+
+

Collectif Mashk Assi

+
+
+

Quoi : Depuis des temps immémoriaux nous occupons turtle island et maintenons un lien sacré avec la terre et l'univers une relation d'équilibre de respect et de partage. Notre rôle est de protéger la terre, l'eau, la vie, les plantes etc. Pour les générations futures.

+ +

Le peuple premier Innuat est présent sur le grand Tshitassinu depuis des temps immémoriaux, jamais le Nitassinan n'a été cédé. Notre rôle en tant que Innuat est de protéger cette terre ancestrale pour les générations futures. Les Innuat se sont toujours organisé autodéterminé sur le Nitassinan, ce principe ancestral se nomme (ilnu utapelitamun) et ce avant des structures étatiques gouvernementales coloniales (conseil de bande) etc. Nous sommes un peuple distinct de par note culture et langue, nous détenons toujours notre souveraineté ancestrale, l'Innu tipenitamun.

+ +

Tous les grands projets économiques signés par les gouvernes étatiques sont illégaux nous ne les reconnaissons pas. Les conseils de bande représentent l'entité fédérale ils ont pour rôle l'assimilation. Ils n'ont aucune juridiction sur les territoires ancestraux occupés depuis des millénaires par les familles ilnuatsh.

+ +

Où : Nitassinan, territoire Innu non-cédé, dont la "Réserve faunique des Laurentides"

+ +

Qui : Chasseurs-cueilleurs Ilnuatsh et Peskotomuhkati (passamaquody) et plusieurs groupes autochtones se joignent au mouvement

+

+

Liens: https://www.facebook.com/collectifmashkassi/ https://indigenouslanddefe.wixsite.com/monsite

+
+

+ +
+

+
+

Défense des Terres de Kanehsatà:ke - Protégeons les pins et le territoire

+
+
+

Quoi : Soutenez les militant·e·s de kanehsata:ke qui défendent leurs droits face au développement immobilier!

+ +

Le 22 mai 2021, les militant·e·s de Kanehsata:ke et leurs allié·e·s ont manifesté. Nous voulons un moratoire sur le développement immobilier, qui menace les territoires traditionnels des Kanien'keha:ka.

+ +

Après trois cents ans, le gouvernement doit une fois pour toutes régler la question en consultant le gouvernement traditionnel des Kanien'keha:ka, les femmes de Kanehsata:ke et le peuple de la Maison Longue.

+ +

« J’ai acheté ça pour développer ! » trône Grégoire Gollin dans l'Éveil et le Concorde. Il parle des Pins, plantés par les Mohawks il y a 150 ans pour éviter l'éboulement de terres à risque d'érosion. 🌲

+ +

Nous répondons « NON ». Les militant.e.s Mohawks se sont rassemblé.e.s samedi 22 mai pour s'opposer aux ambitions de Mr Gollin ✊✊🏽

+ +

➡️ Les arbres ne peuvent être abattus.

+ +

➡️ La forêt n'est pas à vendre - elle est régie par le droit ancestral.

+ +

➡️ La vente de terres doit s'arrêter pour que les Mohawks puissent vivre en paix.

+ +

Pouvez-vous vous joindre à nous et passer à l'action ? Cliquez ici !

+ +

Où : Kanehsatà:ke, incluant les terres volées de soi-disant "Oka", territoire Kanienʼkehá꞉ka non-cédé

+ +

Qui : Katsi'tsakwas (Ellen Gabriel), Kanehsata'kehró:non et allié·e·s

+ +

Liens : https://actionnetwork.org/forms/support-the-kanehsatake-land-defence https://sovereignvoices1.wordpress.com/

+
+

+ +
+

+
+

Kahnawà:ke Land Back Camp : Nous comptons (We Matter)

+
+
+

Quoi : L'avant-garde des Rotisken'rakéhte a mené un groupe de Kahnawa'kehró:non à récupérer des terres illégalement volées à Kahnawà:ke, afin d'arrêter le développement de 290 logements prévu par la municipalité de Châteauguay. + +

Au départ, l'occupation a commencé sur la parcelle E, mais elle s'est depuis déplacée sur le terrain prévu pour le développement. En plus de l'installation d'un campement, des panneaux ont été posés indiquant "Posté : Territoire Kanien'kehá:ka. Entrée interdite. Patrouillé par les Rotisken'rakéhte."

+ +

Ensemble, le conseil de bande et le conseil traditionnel du territoire mohawk de Kahnawà:ke, près de Montréal, affirment qu'ils soutiennent les occupants d'un camp de retour de la terre.

+ +

Les membres qui campent sur la parcelle de terrain affirment qu'ils resteront sur place "aussi longtemps qu'il le faudra" pour empêcher le projet de 290 unités d'habitation approuvé par la ville de Châteauguay.

+ +

C'est comme un acte de défiance de leur part, nous dire "nous ne comptons pas". Et oui, "nous comptons", a expliqué Kaherihshon Fran Beauvais, mère du Turtle Clan.

+ +

"Nous comptons, et nous allons arrêter cela", a ajouté Beauvais. "C'est notre terre, ce sont nos enfants".

+ +

Jeudi après-midi, une demi-douzaine d'enfants jouaient autour d'une clairière près d'un feu de camp où trois tentes avaient été montées sous des drapeaux guerriers flottants. Six ou sept membres adultes de la communauté étaient assis sur des chaises de jardin, discutant sous une tente en filet qui les protégeait de la bruine.

+ +

Malgré l'ambiance détendue, les personnes présentes au camp ont déclaré qu'elles n'étaient pas prêtes à céder "un seul pouce" du territoire qu'elles revendiquent.

+ +

"Nous avons pensé que le 1er juillet était un jour approprié pour faire un campement à cet endroit, en raison du lien entre les pensionnats et le fait qu'ils ont pris notre langue, notre culture et nos terres", a déclaré jeudi Karihwakatste Deer, porte-parole du camp.

+ +

"Ces terres nous sont encore enlevées, cela se passe encore aujourd'hui. Cela n'a pas changé. Nous ne pouvions pas attendre que quelque chose soit construit là."

+ +

La grande chef Kahnawà:ke nouvellement élue, Kahsennenhawe Sky-Deer, a déclaré qu'elle offrait son plein soutien à l'effort, et que de nombreuses lettres envoyées aux représentants du gouvernement étaient jusqu'à présent restées sans réponse.

+ +

"Cela fait des années que nous essayons de récupérer les terres de notre communauté", a déclaré Sky-Deer à APTN News.

+ +

"Alors, maintenant, ça suffit. Prenez notre préoccupation, notre grief au sérieux. Et si ce n'est pas le cas, c'est ce qui se passe - les gens finissent par passer à l'action, parce que les réunions et les lettres ne peuvent pas vous mener plus loin."

+ +

Le conseil municipal de Châteauguay a adopté un changement de zonage dans la zone le 15 mars, ouvrant la voie à la construction de 290 maisons sur le terrain.

+ +

Le chef du conseil des Mohawks, Mike Delisle, a déclaré que le terrain est connu sous le nom de "parcelle E", qui fait partie d'un accord de transfert de terres avec le gouvernement du Québec à la suite de l'expansion d'une autoroute majeure en 2007, juste au sud de Kahnawà:ke.

+ +

Selon les représentants du conseil, Québec doit toujours à Kahnawà:ke 211 acres de terrain en compensation de l'élargissement de l'autoroute 30 sur leur territoire.

+ +

Ces 211 acres se trouvent sur la seigneurie de Sault-Saint-Louis, qui fait partie d'une revendication territoriale historique.

+ +

Pour le conseil traditionnel, il est important de ne pas se laisser enfermer dans les paramètres de la seigneurie. Le territoire traditionnel des Kanien'kehá:ka s'étend sur 3,6 millions d'hectares de terres allant de la vallée du fleuve Saint-Laurent aux montagnes Adirondack et à la vallée de la rivière Mohawk dans le nord de l'État de New York. Il demeure non cédé.

+ +

"Le roi de France n'était pas en mesure de nous donner des terres qui nous appartenaient déjà", a déclaré Teiowí:sonte Thomas Deer.

+ +

"Cependant, nous reconnaissons qu'il était de la responsabilité de chaque régime colonial successif d'empêcher l'empiètement sur ces terres. Ces régimes n'ont pas assumé cette responsabilité."

+ +

"Nous recherchons plus qu'une consultation, nous avons besoin d'une rétribution pour le passé", a déclaré Delisle. "Ce n'est pas un problème de Châteauguay, c'est plutôt un problème fédéral et provincial".

+ +

Beauvais a déclaré que la tentative d'exploitation de ces terres est "une autre gifle" pour la communauté. Une grande partie de l'histoire du Canada a consisté à essayer de prendre les terres des peuples autochtones, a-t-elle ajouté. Et Kahnawake, avec sa population croissante, a besoin de ces terres pour ses propres habitants.

+ +

"Nous allons rester ici et défendre notre cause", a-t-elle déclaré. "C'est notre terre, elle va revenir, elle est à nous. Nous ne l'avons pas donnée, nous la gardons."

+ +

Sky-Deer est d'accord. Les gouvernements fédéral et provincial devraient profiter de cette occasion pour négocier avec sa communauté et transférer le contrôle des terres à Kahnawake, dit-elle.

+ +

"C'est pour nous la chance parfaite de récupérer nos terres, car elles n'ont pas encore été développées", a déclaré Sky-Deer.

+ +

"Les gens de l'extérieur doivent réaliser que nous ne voulons pas nous battre. Nous ne voulons pas toujours devoir nous opposer, parce que cela devient fatigant", a ajouté Beauvais. "Il y a beaucoup de choses à faire : Nous avons des emplois, nous avons des vies aussi. Mais nous choisissons de faire ces actions parce que nous avons besoin de faire connaître notre présence."

+ +

Pour Teiowí:sonte Thomas Deer, les réclamations des terres seront probablement le seul moyen de soutenir la population croissante de Kahnawake.

+ +

"Le peuple Onkwehón:we ne peut pas compter sur le gouvernement du Canada ou de ses provinces pour obtenir la justice des terres."

+ +

"Ce n'est que par des actes d'autodétermination que le peuple Onkwehón:we pourra rétablir son intégrité territoriale."

+ +

Où : Territoire tradionnel Kanien’kehá:ka, le long des frontières de la réserve de Kahnawake et de soi-disant Châteauguay, parcelle E et forêt contigu à protéger.

+ +

Qui : Rotisken’rakéhte, the traditional vanguard of the Kanien’kehá:ka Nation, Kahnawà:kehró:non

+ +

Liens : https://www.aptnnews.ca/national-news/kahnawake-mohawks-erect-protest-camp-on-development-site-near-montreal/
+https://newsinteractives.cbc.ca/longform/what-land-back-means-for-this-reclamation-camp-in-kahnawake
+https://kahnawakenews.com/land-reclamation-occupation-begins-in-chateauguay-p3563-1.htm
+https://itsgoingdown.org/canadian-tire-fire-6-land-reclamation-on-kahnawake-land-frustrations-mount-over-wildfire-response/

+
+

+ +
+

+
+

Appel Anishinabe pour un moratoire de la chasse sportive aux orignaux dans la "réserve faunique La Vérendrye"

+
+
+

Quoi : La Nation Algonquine-Anishinabe demande un moratoire sur la chasse sportive à l'orignal dans la "réserve faunique La Vérendrye". Nous invitons tous les Anishinabés, le peuple originel du territoire, à venir nous soutenir pour sensibiliser les gens à la diminution du nombre d'orignaux.

+ +

Les aînés traditionnels, les gardiens du savoir et les chasseurs ont observé la faible visibilité de l'orignal chaque année depuis l'ouverture de la chasse dans la "réserve faunique La Vérendrye" en 1962. La SÉPAQ (Société des établissements de plein air du Québec) n'a actuellement PAS de plan de gestion de l'orignal en place pour assurer la survie et la durabilité de l'orignal et de toute la vie sauvage dans le parc. Un appel a été lancé au ministre Pierre Dufour pour qu'il mette fin à toute chasse sportive non autochtone dans la "réserve faunique La Vérendrye" et pour qu'il mette en œuvre une étude complète et concertée sur la population, l'habitat et la santé globale de l'orignal dans la "réserve faunique La Vérendrye".

+ +

Nos aînés, nos gardiens du savoir et nos chasseurs sur le terrain ont constaté que l'orignal souffre de graves maladies de flux et de tiques. En tant que protecteurs et gardiens de la terre, nous avons le droit souverain de déclarer et de sensibiliser le public à la nécessité de protéger et de prendre soin de notre population d'orignaux actuelle. Nous nous efforçons de sensibiliser le public à l'aide de nos brochures d'information qui sont distribuées aux chasseurs sportifs non autochtones.

+ +

Où : Kitigan Zibi, Lac-Simon, and Kitcisakik, Nation Anishinabe du Bassin-Versant de la Rivière des Outaouais / Nation of the Ottawa Watershed (A-N-O-R-W), dont fait partie la soi-disante "Réserve faunique La Vérendrye"

+ +

Qui : Anishinaabe et allié·e·s

+ +

Liens : https://www.facebook.com/Anishnabe-Call-for-Moose-Moratorium-103368368199339/
+https://www.facebook.com/Shan.Chief https://www.gofundme.com/f/odinewin
+https://www.facebook.com/groups/we.are.anorw/

+
+

+ +
+

+
+

Mobilisation Matawinie Ekoni Aci et Groupe Otcek

+
+
+

Quoi : Mouvement Populaire auto-géré anti-colonial

+ +

Mobilisation Matawinie Ekoni Aci est un mouvement populaire autogéré qui a vu le jour très récemment, en Juin 2020. La protection des forêts, les enjeux d’extraction des ressources et les enjeux coloniaux sont au coeur de nos inquiétudes. Les peuples autochtones sont les premiers à subir les conséquences de cet extractivisme colonial.

+ +

Mobilisation Matawinie Ekoni Aci travaille en collaboration avec le groupe atikamekw Otcek.

+ +

Entre autres, dans la région de ‘’Lanaudière’’ les Atikamekw n’ont jamais cédé le territoire ancestral Nitaskinan, qu’ils habitent depuis toujours. C’est pourquoi il est primordial d’accorder une grande importance à leurs enseignements et revendications.

+ +

Au sein de ce mouvement, nous apprenons humblement à travailler ensemble, autochtones et allochtones, afin d’aller vers la justice sociale et climatique.

+ +

Où : Nitaskinan, territoire Atikamekw non-cédé

+ +

Qui : Atikamekw et allié·e·s

+ +

Liens : https://www.facebook.com/mobilisationmatawinie/ https://mobilisationmatawinie.wordpress.com/

+
+

+ +
+

+
+

Yarha' - Défendons la forêt vierge Ya’nienhonhndeh (forêt du lac à Moïse)

+
+
+

Quoi : Protection du dernier massif forestier non touchée par l'industrie forestière dans le secteur du lac à Moïse au nord de Québec et autres forêts avoisinantes. Vigiles sporadiques de Wendats et complices pour garder un oeil sur les développements de l'industrie.

+ +

Plus récemment, il y des coupes prévues dans la forêt protégée du secteur Tourilli.

+ +

Où : Ya’nienhonhndeh (forêt du lac à Moïse), territoire Wendat, Atikamekw et Innu

+ +

Qui : Wendats et allié·e·s

+ +

Liens : https://www.facebook.com/Yarha-Défendons-la-forêt-vierge-Defend-the-virgin-forest-378769136370264 https://foret9.wordpress.com/
+Yesconske : https://www.facebook.com/Yesconske-2116811848617384

+
+

+ +
+

+
+

Camp linguistique de retour des terres d'Akwasasne - Akwasasne Landback Language Camp

+
+
+

Quoi : Pour Jaclyn Hall, le fait d'être sur le territoire lui permet d'établir un lien plus profond avec sa langue et sa culture.

+ +

C'est pourquoi cette mère de cinq enfants d'Akwesasne, une communauté kanien'kehá:ka (mohawk) située aux frontières de l'Ontario, du Québec et de l'État de New York, a passé les huit derniers mois à construire un camp pour favoriser l'utilisation de la langue kanien'kéha (mohawk) et l'apprentissage basé sur la culture.

+ +

Ce faisant, elle a récupéré dans le canton québécois de Dundee des terres qui faisaient autrefois partie du vaste territoire de la communauté, par contre au désarroi des propriétaires de maisons à proximité.

+ +

"J'espère qu'ils nous laisseront tranquilles et qu'ils nous laisseront vivre sur ces terres", a déclaré Mme Hall.

+ +

"C'est un endroit sûr pour notre famille. Nous essayons juste de prendre soin de nos enfants et de leur apprendre."

+ +

Historiquement, Akwesasne appelait la région de "Dundee" Tsi:karístisere, ce qui signifie " l'endroit où ils traînent les chaînes de fer" en Kanien'kéha, en référence aux chaînes d'arpentage utilisées pour déterminer la frontière canado-américaine au début des années 1800.

+ +

Elle a canalisé sa résistance à la colonisation pour lancer le camp en septembre 2020. Son objectif était de sensibiliser les gens à la quantité de terres privées du canton de Dundee qui pourraient être rendues à Akwesasne.

+ +

Le camp est situé dans une zone isolée à l'ouest de la rivière Salmon, à quelques kilomètres au sud des chalets de Hopkins Point. La zone est principalement constituée de marécages et n'est accessible que par une route de Fort Covington, N.Y., qui ferme en hiver. C'est l'un des rares endroits qui n'a pas été inondé le printemps dernier, selon Mme Hall.

+ +

Mme Hall a exprimé sa volonté d'acheter le terrain, mais aucune des parties ne s'est rapprochée de l'autre.

+ +

"Les gens de Dundee croient qu'ils possèdent ce terrain alors que nous ne l'avons jamais cédé", a déclaré Mme Hall.

+ +

"Je leur donnerais la valeur marchande de cette propriété ou rien. Vous savez, ils ne nous ont pas vraiment laissé le choix, mais j'essaie d'être juste. Ils n'ont pas utilisé cette propriété. Les arbres étaient en surnombre, ils n'y sont pas allés depuis des années. Comme s'ils n'utilisaient même pas la propriété et nous la voulons."

+ +

Mme Hall se dit ouverte au dialogue mais précise que la prise de décision ne repose pas uniquement sur elle. Tout au long du processus, elle a reçu des conseils des chefs traditionnels. Pour elle, il s'agit de trouver des solutions pacifiques pour que les terres soient rendues à Akwesasne.

+ +

Où : Akwasasne, comprenant des parties de soi-disants "Ontario", "Québec" et "état de New York"

+ +

Qui : Akwesasronon et allié·e·s

+ +

Liens : https://www.facebook.com/Kanienkehaka-Land-Back-Language-Camp-107592151074955/
+https://www.schoolandcollegelistings.com/XX/Unknown/107592151074955/Kanienkehaka-Land-Back-Language-Camp https://newsinteractives.cbc.ca/longform/reclaiming-land-language
+https://newsinteractives.cbc.ca/longform/reclaiming-land-language

+

+ +
+

+
+

1492 Land Back Lane

+
+
+

Quoi : VICTOIRE ! Le 19 juillet 2020, les défenseurs des terres de 1492 Land Back Lane ont stoppé le projet de développement immobilier de Mackenzie Meadows au bord de la ville de Caledonia et de la réserve des Six Nations.

+ +

Infomation historique :

+ +

Nous avons entrepris cette action directe pacifique pour attirer l'attention sur le développement agressif en cours de nos terres. Le projet de logement de Mackenzie Meadows est l'un des nombreux projets approuvés autour de notre communauté.

+ +

Le vendredi 31 juillet 2020, un ordre d'injonction a été signifié à notre camp d'arrière-plan. Le 5 août 2020, la Police provinciale de l'Ontario a fait preuve de violence dans notre communauté pour faire respecter l'injonction. Plusieurs arrestations ont été effectuées, et la communauté des Six Nations a pris des mesures directes pour protéger son peuple. Plusieurs routes ont été bloquées, le chemin de fer du CN a été bloqué et la Police provinciale de l'Ontario a été expulsée de notre territoire.

+ +

La situation actuelle dans les Six Nations est très intense car la menace de violence contre nous a été accordée à nouveau par les tribunaux. Le vendredi 7 août, le comté de Haldimand a reçu une injonction pour que les routes soient dégagées de notre peuple. Le CN a également reçu une injonction pour le chemin de fer qui traverse notre communauté. L'injonction provisoire pour le 1492 Land Back Lane a également été étendue à une injonction permanente. Ces injonctions ne servent que de mécanisme colonial pour nous déposséder de nos terres et de nos ressources, ce qui viole fondamentalement nos droits en tant que peuple autochtone souverain.

+ +

Nous resterons à 1492 et tiendrons bon.

+ +

Nous vous invitons à donner ce que vous pouvez pour nous aider dans notre fonds juridique afin de soutenir les défenseurs des terres qui font face aux accusations actuelles et à toutes les accusations futures qui pourraient résulter des nombreuses injonctions contre nous dans ce dossier particulier.

+ +

Les défenseurs des terres des Six Nations se sont mobilisés pour arrêter le projet de développement immobilier de Mackenzie Meadows, en bordure de la ville de Caledonia. Mackenzie Meadows est l'un des nombreux projets immobiliers de la région qui violent directement la souveraineté des Haudenosaunee. Collectivement, nous restons fermement convaincus que des mesures doivent être prises pour mettre un terme au développement continu de nos terres.

+ +

Les dons au fonds de construction du camp peuvent être envoyés à landback6nations@gmail.com.

+ +

Où : Six Nations, soi-disant "Ontario", près de la ville de Caledonia

+ +

Qui : Allié·e·s de la mobilisation de défense territoriale de 1492 LandBack Lane

+ +

Liens : https://www.facebook.com/1492LandBackLane https://www.gofundme.com/f/legal-fund-1492-land-back-lane

+
+

+ +
+

+
+

Aamjiwnaang et Sarnia Contre les Pipelines, solidarité contre la "vallée chimique" & excursion toxique (Toxic Tour)

+
+
+

Quoi : La Première Nation Aamjiwnaang est située non loin de Sarnia, « vallée de la chimie » de l’Ontario. La Première Nation est depuis longtemps confrontée à la pollution atmosphérique provenant des installations industrielles de la région, dont des raffineries de pétrole, des centrales électriques et des sites d’enfouissement. La « vallée de la chimie » est le plus grand complexe pétrochimique du Canada, regroupant plus de 60 installations pétrochimiques dans une zone de 25 km2. Des taux élevés de cancer, de maladies respiratoires et de problèmes de santé reproductive sont associés à ces installations. Dans la communauté, nombreux sont ceux qui dépendent du poisson de la rivière St. Clair, qui traverse la vallée de la chimie. Le fleuve est le théâtre de 32 déversements majeurs et 300 déversements d’importance moindre entre 1974 et 1986. Ces déversements contribuent à la présence d’environ 10 tonnes de polluants dans la rivière St. Clair.

+ +

La communauté, en plus d’exercer des pressions pour l’amélioration de la qualité de l’air dans la région, travaille à l’amélioration du rendement environnemental de l’industrie. Des relations sont également nouées entre la communauté, le ministère de l’Environnement, de la Protection de la nature et des Parcs de l’Ontario et l’industrie pétrolière, ce qui permet d’améliorer la protection de l’environnement.

+ +

Nous sommes un petit collectif de défenseurs de la terre Anishinaabe qui relie les luttes environnementales indigènes de première ligne. Notre groupe Aamjiwnaang et Sarnia Contre les Pipelines (ASAP) revendique les droits et la souveraineté des autochtones, et nous utilisons à la fois l'action directe non violente et l'éducation pour sensibiliser à l'injustice environnementale. Nous travaillons avec des alliés dans tout le Sud de l'Ontario afin de construire un réseau de soutien pour notre communauté et de briser les barrières de race, de classe, de sexe et de culture.

+ +

Nos décisions sont prises par consensus, et ASAP consulte régulièrement les aînés de la communauté sur l'orientation et les décisions du groupe. ASAP incorpore les enseignements de nos 7 grands-pères dans chaque action, notre culture est incorporée dans chaque événement et réunion. Dans notre mode de vie, nous ne faisons pas que défendre et protéger la Terre Mère, nous faisons des cérémonies pour notre terre et nous vivons avec elle. Il s'agit de rendre à la Terre Mère et de lui redonner du respect là où l'industrie l'a rendue presque trop polluée pour qu'on puisse y vivre. Aamjiwnaang est un exemple unique du colonialisme et de la résilience nécessaire pour qu'une nation continue à prospérer. Les messages d'ASAP se concentrent sur le lien entre la santé et l'environnement de notre communauté.

+ +

Où : Première Nation Aamjiwnaang, proche de soi-disant "Sarnia", "Ontario".

+ +

Qui : Membre de la communauté de Aamjiwnaang First Nation et allié·e·s

+ +

Liens : https://www.facebook.com/AamjiwnaangSarniaAgainstPipelines https://aamjiwnaangsolidarity.org/

+
+

+ +
+

+
+

Camion-maison du traité contre Alton Gas - (Treaty Truck House Against Alton Gas)

+
+
+

Quoi : Les opposants Mi'kmaqs au projet Alton Gas, soutenus par des alliés non autochtones, ont installé un "truckhouse" sur les rives de la rivière Shubenacadie, près du site de déversement de la saumure d'Alton Gas. Il s'agit d'une importante manifestation de résistance à Alton Gas, au droit de pêche des Mi'kmaq prévu par le traité et à l'absence de consultation de la Première nation Sipekne'katik par le gouvernement.

+ +

Le Treaty Truck House et le Treaty Camp ont été établis à la suite de prières et de cérémonies avec des grands-mères, des femmes et des hommes qui se sont engagés à protéger l'eau, la Terre Mère et le Traité. Nous sommes unis pour protéger le sacré pour nos enfants, nos petits-enfants et les générations futures.

+ +

Le projet de stockage de gaz naturel d'Alton propose de créer jusqu'à 18 cavernes de stockage souterraines pour stocker du gaz naturel liquide. Ces cavernes sont créées par l'extraction de dépôts de sel au moyen d'une technique appelée extraction par dissolution. Le sel est retiré en pompant l'eau de la rivière Shubenacadie dans la caverne de sel pour dissoudre le sel. Cette solution saline est ensuite pompée dans un bassin de mélange. De l'eau douce supplémentaire est pompée de la rivière lorsque la marée monte pour diluer ce mélange de saumure par 10. Ensuite, la saumure est pompée à nouveau dans la rivière. La quantité de sel provenant de ces cavernes s'élève à plus de 8 millions de verges cubes, soit 500 000 chargements de camions à benne.

+ +

Il s'agit d'une menace massive pour la vie et l'habitat du poisson dans les rivières Shubenacadie et Stewiacke.

+ +

Un "truckhouse" est un poste de traite établi pour faciliter le commerce entre les Mi'kmaq et leurs partenaires commerciaux. Comme le décrit le Traité de 1752, le gouvernement de la Nouvelle-Écosse reconnaît le droit de construire un "truckhouse" et d'y accéder.

+ +

Les décisions rendues en 2004-2005 par la Cour suprême ont conclu que la Couronne (fédérale et provinciale) a l'obligation de consulter les peuples autochtones et de tenir compte de leurs intérêts lorsque des décisions ou des actions peuvent avoir un effet négatif sur leurs droits issus de traités.

+ +

Dans le cas d'Alton Gas, les gouvernements de la Nouvelle-Écosse et du Canada n'ont pas tenu compte des intérêts de la Première Nation Sipekne'katik, qui comprennent le droit d'avoir et d'accéder à un "truckhouse", et d'avoir et d'accéder à des pièges à anguilles dans la rivière.

+ +

Où : District Sipeknekatik du Miꞌkmaꞌki (soi-disante "Nouvelle-Écosse", proche de "Brentwood")

+ +

Qui : Mi'kmaqs et allié·e·s

+ +

Liens : https://treatytruckhouseagainstaltongas.wordpress.com/ https://www.facebook.com/treatytruckhouse/ https://www.facebook.com/groups/367128616772242/

+
+

+ +
+

+
+

Blocage à Saulnierville en Nouvelle-Écosse

+
+
+

Quoi : Les Mi’kmaqs ont installé un blocage sur le quai de Saulnierville après que des pêcheurs non-autochtones aient attaqués les pêcheurs mi’kmaqs.

+ +

Levée de fonds : Envoyez des fonds par e-transfert à monicah@sipeknekatik.ca et écrivez dans les commentaires que c'est un don pour les warriors Mi'kmaq.

+ +

Où : District Kespu'kwitk du Miꞌkmaꞌki (soi-disante "Nouvelle-Écosse", proche de "Brentwood")

+ +

Qui : Mi'kmaqs et allié·e·s

+ +

Liens : https://www.aptnnews.ca/topic/fishing-rights/ https://contrepoints.media/posts/what-is-happening-in-digby-wharf-nova-scotia-en-fr-que-se-passe-t-il-au-quai-de-digby-en-nouvelle-ecosse

+
+

+ +
+

+
+

Wet’suwet’en, Camp Unist’ot’en

+
+
+

Quoi : Les pipelines proposés par Enbridge Northern Gateway et Pacific Trails cherchent tous deux à traverser les rivières à l'endroit exact où la cabane d'occupation est construite sur le territoire Unis'tot'en de Talbits Kwah.

+ +

Où : Le camp est situé au bord de la Wedzin Kwah et à l'embouchure de la Gosnell Creek. Tous ces cours d'eau sont des affluents des rivières Skeena, Bulkley et Babine.

+ +

Les Unist'ot'en (C'ihlts'ehkhyu / Big Frog Clan) occupent et utilisent notre territoire traditionnel, comme ils le font depuis des siècles. Notre protocole historique de consentement préalable libre et éclairé est en place à l'entrée de notre territoire comme expression de notre juridiction et de notre droit inhérent de donner et de refuser le consentement.

+ +

Qui : Clan Unist'ot'en du peuple Wet'suwet'en et allié·e·s

+ +

Liens : https://www.facebook.com/unistoten

+
+

+ +
+ +
+

+
+

Luttes contre la ligne 3 d'Enbridge
Rassemblement des peuples des traités : S'élever, protéger, arrêter la ligne 3
Treaty People Gathering: Rise, Protect, Stop Line 3

+
+
+

Où : Territoire Ojibwe / Anishinaabe non cédé. (Minnesota du Nord)

+ +

Quoi : Nous nous levons ensemble pour les traités. Nous nous levons ensemble pour le climat. Nous nous levons ensemble pour notre eau. Nous nous soulevons ensemble pour les autres. Alors qu'Enbridge construit la ligne 3 à travers les terres visées par le traité des Anishinaabe et le cours supérieur du Mississippi, nous continuons à résister fermement.

+ +

Levez-vous.

+ +

Nous ne resterons pas là à regarder une société de combustibles fossiles se remplir les poches alors que tant de choses sont détruites pour produire du pétrole dont nous n'avons pas besoin.

+ +

Du 5 au 8 juin, nous nous rassemblerons dans le nord du Minnesota pour mettre nos corps en jeu, pour arrêter la construction et dire au monde que l'époque des pipelines de sables bitumineux est révolue.

+ +

Seul un soulèvement majeur et non-violent - y compris une action directe - propulsera cette question au sommet de la conscience nationale et forcera Biden à agir.

+ +

Nous nous soulevons.

+ +

Rejoignez-nous.

+ +

Qui : Peuples des traités + allié·e·s : Honor the Earth, TakeAction Minnesota, Indigenous Environmental Network, RISE Coalition, MN350: Building a Climate Movement in Minnesota, Welcome Water Protectors Center at the Great River, GreenFaith, Rising Tide North America, Minnesota Interfaith Power & Light, Science for the People - Twin Cities, Indigenous Rising Media, Stop Line 3, Northfield Against Line 3, Giniw Collective, Divest Ed

+ +

Liens : https://www.facebook.com/StopLine3/ https://www.stopline3.org/ https://www.facebook.com/events/519879372363282/ https://treatypeoplegathering.com/ https://welcomewaterprotectors.com/

+
+

+ +
+

+
+

Collectif Giniw

+
+
+

Quoi : Sept autochtones de cinq nations ont mené une action directe pour défendre notre mère avec amour et désintéressement. Entourés de personnes croyantes, d'alliés au cœur solide, nous avons chanté, prié et nous sommes assis avec nos ancêtres dans une loge Anishinaabe au milieu de la destruction de la ligne 3.

+ +

27 protecteurs de l'eau ont été arrêtés ce jour-là. Ensuite, la police a découpé la loge et nous a mis en cage, fouillés à nu et enchaînés pour des délits mineurs. Il s'agit d'un territoire de traité Anishinaabe - c'est Enbridge qui commet une intrusion, pas nous.

+ +

Aux défenseurs de la terre partout dans le monde, nous sommes unis ✊🏽❤️

+ +

Soutenez le fonds juridique ici : https://www.protestlaw.org/line3 et trouvez votre courage pour vous tenir avec nous ou utilisez votre voix pour contacter le président Joe Biden, Gina McCarthy, Deb Haaland pour #StopLine3.

+ +

Qui : Le collectif Giniw est une résistance de première ligne menée par des femmes autochtones et deux esprits pour protéger notre mère, défendre le sacré et vivre en équilibre.

+ +

Liens : https://www.facebook.com/giniwcollective/

+
+

+ +
+

+
+

Projet Land Back - Wiigwaasikaa

+
+
+

Quoi : Projet Land Back a entamé un processus pour reprendre l’intendance de "Taylor Massey Creek Park". Ils et elles ont renommé l’espace Wiigwaasikaa, qui veut dire « il y a beaucoup de bouleaux blancs » en Objibwe.

+ +

Pour les non-initiés, Tkaronto est un mot en kanienké:ha qui signifie "là où il y a des arbres debout dans l'eau", selon plusieurs locuteurs Kanienʼkehá꞉ka et l'expert en langues autochtones John Steckley. Utiliser Tkaronto à la place de "Toronto" n'est qu'un petit pas vers l'abolition de l'oppression systémique des peuples autochtones.

+ +

Depuis le 2 juillet 2020, nous, Minisinook Wiigwaasikaa, avons repris possession de la terre en gérant ce qui est connu sous le nom de Taylor Massey Park, adjacent au 305 Dawes Road à Tkaronto.

+ +

Nous créons un espace autonome tout en mettant en œuvre l'auto-gouvernance par le biais de méthodes traditionnelles.

+ +

Nous croyons en l'importance de faire entendre la voix des jeunes de Wiigwaasikaa. Afin de progresser, les jeunes ont également été diligents pour obtenir des conseils des aînés et des gardiens de la sagesse très respectés qui marchent à leurs côtés.

+ +

Dans le cadre de notre intendance, nous avons l'intention de planter davantage de bouleaux et d'espèces indigènes dans l'environnement et de prendre soin des terres et des cours d'eau. Nous avons également l'intention d'aménager des jardins de nourriture et de médecine afin de soutenir notre plus grande souveraineté alimentaire.

+ +

Nous avons l'intention de continuer à créer un espace pour que les générations actuelles et futures soient en communion avec toute la création. Nous tiendrons un espace pour établir une connexion avec la tradition, les cérémonies, les médecines sacrées, la nourriture, les éléments, les animaux et les uns les autres.

+ +

Nous demandons la reconnaissance de nos droits légaux à la souveraineté et à l'intendance de la terre, y compris la non-interférence et la décriminalisation de nos méthodes traditionnelles de gouvernance.

+ +

Où : Wiigwaasikaa, Tkaronto. (soi-disant "Toronto")

+ +

Qui : Minisinook Wiigwaasikaa et allié·e·s

+ +

Liens : https://www.facebook.com/wiigwaasikaa/ https://www.facebook.com/Project-Land-Back-Wiigwaasikaa-107880394364234

+
+

+ +
+

+
+

Libérez les chutes Asinabka / Akikodjiwan

+
+
+

Quoi : Il s'agissait au départ d'un site sacré et d'un lieu de rencontre pour de nombreuses Premières nations. Il a été soumis à 200 ans d'utilisation industrielle et d'abus qui ont surtout enrichi une minorité. Nous ne pouvons pas laisser le développement à but lucratif dominer à nouveau la terre et l'eau.

+ +

Nous invitons tous les Canadiens à redonner aux chutes des Chaudières et à ses trois îles dans la rivière des Outaouais une utilisation centrée sur les gens et mieux adaptée à notre époque. Les chutes et les îles adjacentes doivent devenir une oasis naturelle et un lieu de rassemblement international favorisant la guérison, l'unité et la réconciliation.

+ +

La vision des chutes des Chaudières et de ses trois îles a été portée, pendant 30 de ses 97 ans, par l'aîné algonquin William Commanda. Il a fait pression et a prié pour la création d'un cercle de toutes les nations. C'est cette vision que l'architecte autochtone de renommée mondiale, Douglas Cardinal, honore et poursuit.

+ +

Où : Asinabka / Akikodjiwan, soi-disante "Chaudière Falls" et ses trois îles, "Ottawa", "Ontario"

+ +

Qui : Anishinaabe et allié·e·s

+ +

Liens : https://www.facebook.com/FreeTheFalls/ https://freethefalls.ca/

+
+

+ +
+

+
+

Stand with Ada'itsx (Fairy Creek) and the Pacheedaht people

+
+
+

Quoi : NOUS SOMMES AUX CÔTÉS DE L'AÎNÉ BILL JONES

+ +

"Actuellement et historiquement, il n'y a pas eu de respect pour notre terre, pour les Pacheedaht et pour toutes nos terres et forêts indigènes." - Elder Bill Jones

+ +

Nous vivons une crise du climat et de la biodiversité. Il ne reste que 2,7 % des forêts anciennes productives de la Colombie-Britannique. Le Old Growth Strategic Review Panel de la C.-B. a demandé instamment que l'on mette fin à l'exploitation des forêts anciennes, mais le gouvernement continue de faire du surplace.

+ +

La Brigade volante de la forêt tropicale se félicite de l'annonce faite ce matin par les Premières nations Pacheedaht, Ditidaht et Huu-ay-aht, qui demandent le report de l'exploitation forestière à Fairy Creek et dans le Walbran central. Bien qu'il s'agisse d'un pas dans la bonne direction, nous, et l'aîné Pacheedaht Bill Jones, restons préoccupés par le fait que cela permet au statu quo de l'exploitation forestière ancienne de se poursuivre sans relâche sur le territoire.

+ +

"Non, nous ne devons pas rester les bras croisés, car toutes les Premières Nations sont enfermées dans des contrats injustes qui leur lient les mains", a déclaré l'aîné Bill Jones.

+ +

Tout report sur Fairy Creek DOIT inclure la totalité des 2 080 hectares de la forêt pluviale de Fairy Creek, et pas seulement les forêts anciennes situées dans le bassin versant. Cela comprendrait la protection des centaines d'hectares de forêts anciennes à risque adjacentes au bassin versant de Fairy Creek, à la fois à Granite Creek et dans la zone connue sous le nom de "2000 Road". Nous espérons que l'accord final entre les Pacheedaht et le gouvernement provincial reflétera ce point. De même, nous demandons le report de l'exploitation forestière dans toute la zone de gestion spéciale du Walbran central.

+ +

Jusqu'à ce que ces choses se produisent, à l'invitation de l'aîné Bill Jones, la Rainforest Flying Squad continuera à défendre nos dernières forêts anciennes.

+ +

Faisant référence à l'importance des arbres anciens, l'aîné Bill Jones déclare : "Ce sont des guides, des enseignants, des êtres spirituels."

+ +

Où : Ada’itsx / Greater Fairy Creek Rainforest, territoire traditionnel Pacheedaht non-cédé, soi-disante île de Vancouver (Colombie-Britannique)

+ +

Qui : La Brigade volante de la forêt tropicale (Rainforest Flying Squad) est un mouvement d'action directe non violente, menée par des bénévoles. Nous nous engageons à protéger les derniers peuplements de forêt pluviale tempérée ancienne d'importance mondiale sur l'île de Vancouver.

+ +

Liens : https://laststandforforests.com/
+Despite Deferral Old Growth Logging Continues – Last Stand for Forests
+The World is Watching: Protect Old Growth Forests in B.C. - YouTube
+https://www.cbc.ca/news/canada/british-columbia/vancouver-island-blockade-remains-despite-release-of-government-report-on-old-growth-forests-1.5725349

+

+
+

+ +
+
+

Si vous connaissez d'autres luttes des Premiers Peuples pour le retour des terres, n'hésitez pas nous en aviser à <landback@gripuqam.org>. Merci !

+
+

+ +
+
+
+
+ +
+ + + diff --git a/terresnoncedees/river-camp-fairy-creek.jpg b/terresnoncedees/river-camp-fairy-creek.jpg new file mode 100644 index 0000000..fbbf263 Binary files /dev/null and b/terresnoncedees/river-camp-fairy-creek.jpg differ diff --git a/terresnoncedees/stop-galt.jpg b/terresnoncedees/stop-galt.jpg new file mode 100644 index 0000000..0c2f00b Binary files /dev/null and b/terresnoncedees/stop-galt.jpg differ diff --git a/wp-content/plugins/enable-media-replace/build/shortpixel/notices/src/css/notices.css b/wp-content/plugins/enable-media-replace/build/shortpixel/notices/src/css/notices.css new file mode 100644 index 0000000..70fa88f --- /dev/null +++ b/wp-content/plugins/enable-media-replace/build/shortpixel/notices/src/css/notices.css @@ -0,0 +1,21 @@ +.shortpixel.notice { + padding: 8px; } + .shortpixel.notice img { + display: inline-block; + margin: 0 25px 0 0; + max-height: 50px; } + .shortpixel.notice .notice-dismiss { + margin-top: 10px; } + +/* In-view notice ( not on top, between the options ) - styled after WP notice */ +.view-notice { + box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1); + border: 4px solid #fff; + padding: 1px 12px; } + .view-notice p { + margin: 1em 0 !important; } + .view-notice.warning { + border-left-color: #ffb900; } + +.view-notice-row { + display: none; } diff --git a/wp-content/plugins/enable-media-replace/build/shortpixel/notices/src/css/notices.scss b/wp-content/plugins/enable-media-replace/build/shortpixel/notices/src/css/notices.scss new file mode 100644 index 0000000..a275f97 --- /dev/null +++ b/wp-content/plugins/enable-media-replace/build/shortpixel/notices/src/css/notices.scss @@ -0,0 +1,39 @@ + +.shortpixel.notice +{ + //padding: 18px; + //min-height: 50px; + padding: 8px; + img + { + display:inline-block; + margin: 0 25px 0 0; + max-height: 50px; + } + .notice-dismiss + { + margin-top: 10px; + } +} + +/* In-view notice ( not on top, between the options ) - styled after WP notice */ +.view-notice +{ + + box-shadow: 0 1px 1px 0 rgba( 0, 0, 0, 0.1 ); + border: 4px solid #fff; + + padding: 1px 12px; + p { + margin: 1em 0 !important; + } + &.warning + { + border-left-color: #ffb900; + } +} + +.view-notice-row +{ + display: none; +} diff --git a/wp-content/plugins/enable-media-replace/css/admin.css b/wp-content/plugins/enable-media-replace/css/admin.css new file mode 100644 index 0000000..a798e46 --- /dev/null +++ b/wp-content/plugins/enable-media-replace/css/admin.css @@ -0,0 +1,991 @@ +.ui-widget-content { + border: 1px solid #dddddd; + background: #ffffff; + color: #333333; } + +.ui-widget-overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; } + +.ui-datepicker { + width: 17em; + padding: .2em .2em 0; + display: none; } + +.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, +.ui-datepicker select.ui-datepicker-year { + width: 45%; } + +.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: center; + 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, +.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%; + font-size: 0; } + +/* 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, +.ui-datepicker-rtl .ui-datepicker-group { + float: right; } + +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { + border-right-width: 0; + border-left-width: 1px; } + +/* Icons */ +.ui-datepicker .ui-icon { + display: block; + text-indent: -99999px; + overflow: hidden; + background-repeat: no-repeat; + left: .5em; + top: .3em; } + +.ui-icon { + width: 16px; + height: 16px; } + +.ui-icon, +.ui-widget-content .ui-icon { + background-image: url("../img/ui-icons_444444_256x240.png"); } + +.ui-widget-header .ui-icon { + background-image: url("../img/ui-icons_444444_256x240.png"); } + +.ui-state-hover .ui-icon, +.ui-state-focus .ui-icon, +.ui-button:hover .ui-icon, +.ui-button:focus .ui-icon { + background-image: url("../img/ui-icons_555555_256x240.png"); } + +.ui-state-active .ui-icon, +.ui-button:active .ui-icon { + background-image: url("../img/ui-icons_ffffff_256x240.png"); } + +.ui-state-highlight .ui-icon, +.ui-button .ui-state-highlight.ui-icon { + background-image: url("../img/ui-icons_777620_256x240.png"); } + +/* positioning */ +.ui-icon-blank { + background-position: 16px 16px; } + +.ui-icon-caret-1-n { + background-position: 0 0; } + +.ui-icon-caret-1-ne { + background-position: -16px 0; } + +.ui-icon-caret-1-e { + background-position: -32px 0; } + +.ui-icon-caret-1-se { + background-position: -48px 0; } + +.ui-icon-caret-1-s { + background-position: -65px 0; } + +.ui-icon-caret-1-sw { + background-position: -80px 0; } + +.ui-icon-caret-1-w { + background-position: -96px 0; } + +.ui-icon-caret-1-nw { + background-position: -112px 0; } + +.ui-icon-caret-2-n-s { + background-position: -128px 0; } + +.ui-icon-caret-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: -65px -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: -65px -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: 1px -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-on { + background-position: -96px -144px; } + +.ui-icon-radio-off { + 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; } + +/* Corner radius */ +.ui-corner-all, +.ui-corner-top, +.ui-corner-left, +.ui-corner-tl { + border-top-left-radius: 3px; } + +.ui-corner-all, +.ui-corner-top, +.ui-corner-right, +.ui-corner-tr { + border-top-right-radius: 3px; } + +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-left, +.ui-corner-bl { + border-bottom-left-radius: 3px; } + +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-right, +.ui-corner-br { + border-bottom-right-radius: 3px; } + +.emr_upload_form form { + display: flex; } + .emr_upload_form form .upsell-wrapper { + margin-left: 10px; } +.emr_upload_form .wrapper { + padding: 18px; + border: 1px solid #ccc; } + .emr_upload_form .wrapper .section-header { + font-size: 18px; + border-bottom: 1px solid #ccc; + padding: 6px 0; + margin: 0 0 15px 0; } +.emr_upload_form .image_chooser.wrapper { + min-height: 350px; } + .emr_upload_form .image_chooser.wrapper .emr_drop_area { + border: 4px dashed #b4b9be; + max-width: 600px; + padding: 28px 14px; + text-align: center; + position: relative; } + .emr_upload_form .image_chooser.wrapper .emr_drop_area h1 { + display: none; } + .emr_upload_form .image_chooser.wrapper .emr_drop_area .drop-wrapper { + margin: 0 auto; } + .emr_upload_form .image_chooser.wrapper .emr_drop_area.drop_breakout { + position: fixed; + left: 0; + right: 0; + bottom: 0; + top: 0; + max-width: none; + border-color: #83b4d8; + border-width: 10px; + z-index: 999999; + background-color: rgba(68, 68, 68, 0.7); } + .emr_upload_form .image_chooser.wrapper .emr_drop_area.drop_breakout h1 { + color: #fff; + position: absolute; + font-size: 50px; + line-height: 50px; + margin-top: -25px; + top: 50%; + width: 100%; + text-align: center; + display: block; } + .emr_upload_form .image_chooser.wrapper .emr_drop_area.drop_breakout .drop-wrapper { + display: none; } + .emr_upload_form .image_chooser.wrapper .image_previews { + margin: 15px 0; } + .emr_upload_form .image_chooser.wrapper .image_previews .image_placeholder { + position: relative; + display: inline-block; + margin-right: 25px; + margin-bottom: 10px; + border: 1px solid #ddd; + vertical-align: top; + max-height: 500px; } + .emr_upload_form .image_chooser.wrapper .image_previews .image_placeholder .textlayer { + font-size: 25px; + line-height: 25px; + opacity: 0.7; + position: absolute; + color: #ccc; + left: 48%; + top: 50%; + transform: translate(-50%, -50%); + border: 1px dashed #eee; + background-color: #333; + padding: 8px; } + .emr_upload_form .image_chooser.wrapper .image_previews .image_placeholder .dashicons { + font-size: 60px; + position: absolute; + top: 50%; + margin-top: -30px; + left: 50%; + margin-left: -30px; + opacity: 0.5; } + .emr_upload_form .image_chooser.wrapper .image_previews .image_placeholder .image_size { + text-align: center; + position: absolute; + bottom: -25px; + width: 100%; } + .emr_upload_form .image_chooser.wrapper .image_previews .image_placeholder.is_image .dashicons::before, .emr_upload_form .image_chooser.wrapper .image_previews .image_placeholder.is_image .dashicons { + display: none; } + .emr_upload_form .image_chooser.wrapper .image_previews .image_placeholder.not_image img { + display: none; } + .emr_upload_form .image_chooser.wrapper .image_previews .image_placeholder.not_image .textlayer { + display: none; } + .emr_upload_form .image_chooser.wrapper .image_previews .image_placeholder.not_image.is_document .textlayer { + font-size: 18px; + line-height: 20px; + display: block; } +.emr_upload_form .form-error, .emr_upload_form .form-warning { + background: #fff; + padding: 8px; + border-left: 4px solid #ff0000; + margin: 10px 0; + display: none; } + .emr_upload_form .form-error p, .emr_upload_form .form-warning p { + margin: 0; + font-size: 12px; + font-weight: 700; } +.emr_upload_form .form-warning { + border-left: 4px solid #ffb900; } +.emr_upload_form .option-flex-wrapper { + display: flex; } +.emr_upload_form .replace_type.wrapper { + flex: 1; + border: 1px solid #ccc; + margin: 15px 0; } + .emr_upload_form .replace_type.wrapper .option { + position: relative; + z-index: 1; } + .emr_upload_form .replace_type.wrapper .option label { + font-size: 1.2em; } + .emr_upload_form .replace_type.wrapper .option .nofeature-notice { + border: 1px solid #ccc; + padding: 8px; + margin: 0; + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + opacity: 0.8; + z-index: 9; + background: #444; } + .emr_upload_form .replace_type.wrapper .option .nofeature-notice p { + text-align: center; + color: #fff; + margin: 15px 0; } +.emr_upload_form .options.wrapper { + flex: 1; + border: 1px solid #ccc; + padding: 15px; + margin: 15px 0 15px 35px; } + .emr_upload_form .options.wrapper .custom_date .emr_datepicker { + width: 150px; } + .emr_upload_form .options.wrapper .custom_date .emr_hour, .emr_upload_form .options.wrapper .custom_date .emr_minute { + width: 45px; } + .emr_upload_form .options.wrapper ul li input { + margin-right: 8px; } + .emr_upload_form .options.wrapper .option label { + vertical-align: top; } + .emr_upload_form .options.wrapper .small { + font-size: 10px; + vertical-align: top; + margin-left: 8px; } + .emr_upload_form .options.wrapper .custom_date { + margin: 8px 0 0 25px; + visibility: hidden; + opacity: 0; } + .emr_upload_form .options.wrapper .custom_date span.field-title { + display: inline-block; + margin-bottom: 4px; + color: #444; + font-size: 12px; + width: 100%; + text-align: left; + vertical-align: middle; + line-height: 26px; } + .emr_upload_form .options.wrapper .custom_date span.field-title::before { + font-size: 20px; + vertical-align: top; + margin-right: 4px; } + .emr_upload_form .options.wrapper .location_option { + display: none; + margin-top: 12px; } + .emr_upload_form .options.wrapper .location_option label { + vertical-align: baseline; + margin-right: 8px; } +.emr_upload_form .form_controls.wrapper { + clear: both; + margin: 8px 0 15px 0; + border: 0; + padding: 0; } + .emr_upload_form .form_controls.wrapper .button { + padding-left: 20px; + padding-right: 20px; } +.emr_upload_form .shortpixel.notice { + padding: 12px; } +.emr_upload_form .shortpixel-offer { + background: #fff; + width: 250px; + min-height: 270px; + border: 1px solid #ccc; + padding: 15px; + margin-bottom: 25px; + float: right; + clear: both; } + .emr_upload_form .shortpixel-offer h3 { + line-height: 1.3em; } + .emr_upload_form .shortpixel-offer.site-speed { + background-color: #dcfdff; } + .emr_upload_form .shortpixel-offer.site-speed .img-wrapper { + text-align: center; + margin: 0 0 25px 0; } + .emr_upload_form .shortpixel-offer.site-speed .img-wrapper img { + max-width: 140px; + max-height: 140px; + margin: 0; } + .emr_upload_form .shortpixel-offer.site-speed h3 { + color: #00d0e5; + font-size: 20px; + text-align: center; + margin: 0; + line-height: 1.3em; } + .emr_upload_form .shortpixel-offer.site-speed .button-wrapper { + text-align: center; + margin-top: 35px; } + .emr_upload_form .shortpixel-offer.site-speed .button-wrapper a { + background-color: #ff0000; + color: #fff; + display: inline-block; + padding: 8px; + text-decoration: none; + font-weight: 700; + font-size: 20px; } + .emr_upload_form .shortpixel-offer.site-speed .red { + color: #ff0000; } +@media (max-width: 1200px) { + .emr_upload_form .image_previews { + text-align: center; } + .emr_upload_form .option-flex-wrapper { + flex-direction: column; } + .emr_upload_form .option-flex-wrapper .options.wrapper { + margin-left: 0; } } +@media (max-width: 960px) { + .emr_upload_form .upsell-wrapper { + display: none; } } diff --git a/wp-content/plugins/enable-media-replace/css/admin.rtl.css b/wp-content/plugins/enable-media-replace/css/admin.rtl.css new file mode 100644 index 0000000..f6381af --- /dev/null +++ b/wp-content/plugins/enable-media-replace/css/admin.rtl.css @@ -0,0 +1,834 @@ +.ui-widget-content { + border: 1px solid #dddddd; + background: #ffffff; + color: #333333; } + +.ui-widget-overlay { + position: fixed; + top: 0; + right: 0; + width: 100%; + height: 100%; } + +.ui-datepicker { + width: 17em; + padding: .2em .2em 0; + display: none; } + +.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 { + right: 2px; } + +.ui-datepicker .ui-datepicker-next { + left: 2px; } + +.ui-datepicker .ui-datepicker-prev-hover { + right: 1px; } + +.ui-datepicker .ui-datepicker-next-hover { + left: 1px; } + +.ui-datepicker .ui-datepicker-prev span, +.ui-datepicker .ui-datepicker-next span { + display: block; + position: absolute; + right: 50%; + margin-right: -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, +.ui-datepicker select.ui-datepicker-year { + width: 45%; } + +.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: center; + text-decoration: none; } + +.ui-datepicker .ui-datepicker-buttonpane { + background-image: none; + margin: .7em 0 0 0; + padding: 0 .2em; + border-right: 0; + border-left: 0; + border-bottom: 0; } + +.ui-datepicker .ui-datepicker-buttonpane button { + float: left; + 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: right; } + +/* with multiple calendars */ +.ui-datepicker.ui-datepicker-multi { + width: auto; } + +.ui-datepicker-multi .ui-datepicker-group { + float: right; } + +.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, +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { + border-right-width: 0; } + +.ui-datepicker-multi .ui-datepicker-buttonpane { + clear: right; } + +.ui-datepicker-row-break { + clear: both; + width: 100%; + font-size: 0; } + +/* RTL support */ +.ui-datepicker-rtl { + direction: ltr; } + +.ui-datepicker-rtl .ui-datepicker-prev { + left: 2px; + right: auto; } + +.ui-datepicker-rtl .ui-datepicker-next { + right: 2px; + left: auto; } + +.ui-datepicker-rtl .ui-datepicker-prev:hover { + left: 1px; + right: auto; } + +.ui-datepicker-rtl .ui-datepicker-next:hover { + right: 1px; + left: auto; } + +.ui-datepicker-rtl .ui-datepicker-buttonpane { + clear: left; } + +.ui-datepicker-rtl .ui-datepicker-buttonpane button { + float: right; } + +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current, +.ui-datepicker-rtl .ui-datepicker-group { + float: left; } + +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { + border-left-width: 0; + border-right-width: 1px; } + +/* Icons */ +.ui-datepicker .ui-icon { + display: block; + text-indent: -99999px; + overflow: hidden; + background-repeat: no-repeat; + right: .5em; + top: .3em; } + +.ui-icon { + width: 16px; + height: 16px; } + +.ui-icon, +.ui-widget-content .ui-icon { + background-image: url("../img/ui-icons_444444_256x240.png"); } + +.ui-widget-header .ui-icon { + background-image: url("../img/ui-icons_444444_256x240.png"); } + +.ui-state-hover .ui-icon, +.ui-state-focus .ui-icon, +.ui-button:hover .ui-icon, +.ui-button:focus .ui-icon { + background-image: url("../img/ui-icons_555555_256x240.png"); } + +.ui-state-active .ui-icon, +.ui-button:active .ui-icon { + background-image: url("../img/ui-icons_ffffff_256x240.png"); } + +.ui-state-highlight .ui-icon, +.ui-button .ui-state-highlight.ui-icon { + background-image: url("../img/ui-icons_777620_256x240.png"); } + +/* positioning */ +.ui-icon-blank { + background-position: 16px 16px; } + +.ui-icon-caret-1-n { + background-position: 100% 0; } + +.ui-icon-caret-1-ne { + background-position: -16px 0; } + +.ui-icon-caret-1-e { + background-position: -32px 0; } + +.ui-icon-caret-1-se { + background-position: -48px 0; } + +.ui-icon-caret-1-s { + background-position: -65px 0; } + +.ui-icon-caret-1-sw { + background-position: -80px 0; } + +.ui-icon-caret-1-w { + background-position: -96px 0; } + +.ui-icon-caret-1-nw { + background-position: -112px 0; } + +.ui-icon-caret-2-n-s { + background-position: -128px 0; } + +.ui-icon-caret-2-e-w { + background-position: -144px 0; } + +.ui-icon-triangle-1-n { + background-position: 100% -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: -65px -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: 100% -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: -65px -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: 1px -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: 100% -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: 100% -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: 100% -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: 100% -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: 100% -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: 100% -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-on { + background-position: -96px -144px; } + +.ui-icon-radio-off { + 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: 100% -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: 100% -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: 100% -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: 100% -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: 100% -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; } + +/* Corner radius */ +.ui-corner-all, +.ui-corner-top, +.ui-corner-left, +.ui-corner-tl { + border-top-right-radius: 3px; } + +.ui-corner-all, +.ui-corner-top, +.ui-corner-right, +.ui-corner-tr { + border-top-left-radius: 3px; } + +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-left, +.ui-corner-bl { + border-bottom-right-radius: 3px; } + +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-right, +.ui-corner-br { + border-bottom-left-radius: 3px; } + +.emr_upload_form .wrapper { + margin: 15px 0; + padding: 18px; + border: 1px solid #ccc; } + .emr_upload_form .wrapper .section-header { + font-size: 18px; + border-bottom: 1px solid #ccc; + padding: 6px 0; + margin: 0 0 15px 0; } +.emr_upload_form .image_chooser.wrapper { + min-height: 350px; } + .emr_upload_form .image_chooser.wrapper .image_previews { + margin: 15px 0; } +.emr_upload_form .option-flex-wrapper { + display: flex; } +.emr_upload_form .replace_type.wrapper { + flex: 1; + border: 1px solid #ccc; + margin: 15px 0; } + .emr_upload_form .replace_type.wrapper label { + font-size: 1.2em; } +.emr_upload_form .options.wrapper { + flex: 1; + border: 1px solid #ccc; + padding: 15px; + margin: 15px 35px 15px 0; } + .emr_upload_form .options.wrapper .custom_date .emr_datepicker { + width: 150px; } + .emr_upload_form .options.wrapper .custom_date .emr_hour, .emr_upload_form .options.wrapper .custom_date .emr_minute { + width: 45px; } + .emr_upload_form .options.wrapper ul li input { + margin-left: 8px; } + .emr_upload_form .options.wrapper .option label { + vertical-align: top; } + .emr_upload_form .options.wrapper .small { + font-size: 10px; + vertical-align: top; + margin-right: 8px; } + .emr_upload_form .options.wrapper .custom_date { + margin: 8px 25px 0 0; + visibility: hidden; + opacity: 0; } + .emr_upload_form .options.wrapper .custom_date span.field-title { + display: inline-block; + margin-bottom: 4px; + color: #444; + font-size: 12px; + width: 100%; + text-align: right; + vertical-align: middle; + line-height: 26px; } + .emr_upload_form .options.wrapper .custom_date span.field-title::before { + font-size: 20px; + vertical-align: top; + margin-left: 4px; } +.emr_upload_form .form_controls.wrapper { + clear: both; + margin: 8px 0 15px 0; + border: 0; + padding: 0; } + .emr_upload_form .form_controls.wrapper .button { + padding-right: 20px; + padding-left: 20px; } +.emr_upload_form .shortpixel-notice { + background: #fff; + width: 250px; + min-height: 270px; + border: 1px solid #ccc; + padding: 15px; + margin: 0 0 10px; + float: left; } + .emr_upload_form .shortpixel-notice h3 { + line-height: 1.3em; } diff --git a/wp-content/plugins/enable-media-replace/css/edit_attachment.css b/wp-content/plugins/enable-media-replace/css/edit_attachment.css new file mode 100644 index 0000000..29b1e51 --- /dev/null +++ b/wp-content/plugins/enable-media-replace/css/edit_attachment.css @@ -0,0 +1,20 @@ +/* Styling for the edit attachment screen */ +#emr-replace-box .previewwrapper, #emr-showthumbs-box .previewwrapper { + display: inline-block; + position: relative; + clear: both; + margin: 3px 0; } + #emr-replace-box .previewwrapper img, #emr-showthumbs-box .previewwrapper img { + max-width: 100%; } + #emr-replace-box .previewwrapper span.label, #emr-showthumbs-box .previewwrapper span.label { + font-size: 14px; + color: #fff; + position: absolute; + line-height: 16px; + margin-top: -8px; + top: 50%; + left: 0; + right: 0; + background: rgba(0, 0, 0, 0.5); + text-align: center; + padding: 4px 0; } diff --git a/wp-content/plugins/enable-media-replace/img/ui-icons_444444_256x240.png b/wp-content/plugins/enable-media-replace/img/ui-icons_444444_256x240.png new file mode 100644 index 0000000..19f664d Binary files /dev/null and b/wp-content/plugins/enable-media-replace/img/ui-icons_444444_256x240.png differ diff --git a/wp-content/plugins/enable-media-replace/img/ui-icons_555555_256x240.png b/wp-content/plugins/enable-media-replace/img/ui-icons_555555_256x240.png new file mode 100644 index 0000000..e965f6d Binary files /dev/null and b/wp-content/plugins/enable-media-replace/img/ui-icons_555555_256x240.png differ diff --git a/wp-content/plugins/enable-media-replace/js/emr_admin.js b/wp-content/plugins/enable-media-replace/js/emr_admin.js new file mode 100644 index 0000000..56f2d33 --- /dev/null +++ b/wp-content/plugins/enable-media-replace/js/emr_admin.js @@ -0,0 +1,355 @@ + + // interface for emr. + var emrIf = function ($) + { + var source_type; + var source_is_image; + var target_type; + var target_is_image; + + var is_debug = false; + + var is_dragging = false; + + this.init = function() + { + + if ( emr_options.is_debug) + { + this.is_debug = true; + this.debug('EMR Debug is active'); + } + + $('input[name="timestamp_replace"]').on('change', $.proxy(this.checkCustomDate, this)); + $('input[name="replace_type"]').on('change', $.proxy(this.showReplaceOptions, this)); + $('input[name="userfile"]').on('change', $.proxy(this.handleImage, this)); + + // DragDrop + $('.wrap.emr_upload_form').on('dragover', $.proxy(this.dragOverArea, this)); + $('.wrap.emr_upload_form').on('dragleave', $.proxy(this.dragOutArea, this)); + $('.emr_drop_area').on('drop', $.proxy(this.fileDrop, this)); + + this.checkCustomDate(); + this.loadDatePicker(); + + var source = $('.image_placeholder').first(); + if (typeof( $(source).data('filetype') ) !== 'undefined') + { + source_type = $(source).data('filetype').trim(); + this.debug('detected type - ' + source_type); + } + else + source_type = ''; // error state + + if (source.hasClass('is_image')) + { + source_is_image = true; + } + + this.updateTextLayer(source, false); + this.showReplaceOptions(); + + } + this.loadDatePicker = function() + { + $('#emr_datepicker').datepicker({ + dateFormat: emr_options.dateFormat, + onClose: function() { + var date = $(this).datepicker( 'getDate' ); + if (date) { + var formattedDate = (date.getFullYear()) + "-" + + (date.getMonth()+1) + "-" + + date.getDate(); + $('input[name="custom_date_formatted"]').val(formattedDate); + //$('input[name="custom_date"]').val($.datepicker.parseDate( emr_options.dateFormat, date)); + } + }, + }); + }, + this.checkCustomDate = function() + { + if ($('input[name="timestamp_replace"]:checked').val() == 3) + this.showCustomDate(); + else + this.hideCustomDate(); + }, + this.showCustomDate = function() + { + $('.custom_date').css('visibility', 'visible').fadeTo(100, 1); + }, + this.hideCustomDate = function() + { + $('.custom_date').fadeTo(100,0, + function () + { + $('.custom_date').css('visibility', 'hidden'); + }); + } + this.handleImage = function(e) + { + this.toggleErrors(false); + var target = e.target; + var file = target.files[0]; + + if (! target.files || target.files.length <= 0) // FileAPI appears to be not present, handle files on backend. + { + if ($('input[name="userfile"]').val().length > 0) + this.checkSubmit(); + console.log('FileAPI not detected'); + return false; + } + + var status = this.checkUpload(file); + this.debug('check upload status ' + status); + this.debug('file size:' + file.size); + + if (status) + { + this.updatePreview(file); + } + else { + this.updatePreview(null); + } + this.checkSubmit(); + }, + this.updatePreview = function(file) + { + var preview = $('.image_placeholder').last(); + + $(preview).find('img').remove(); + $(preview).removeClass('is_image not_image is_document'); + var is_empty = false; + + if (file !== null) /// file is null when empty, or error + { + target_is_image = (file.type.indexOf('image') >= 0) ? true : false; + target_type = file.type.trim(); + } + else + { + is_empty = true; + } + // If image, load thumbnail and get dimensions. + if (file && target_is_image) + { + var img = new Image(); + img.src = window.URL.createObjectURL(file); + self = this; + + img.setAttribute('style', 'max-width:100%; max-height: 100%;'); + img.addEventListener("load", function () { + // with formats like svg it can be rough. + var width = img.naturalWidth; + var height = img.naturalHeight; + if (width == 0) + width = img.width; + if (height == 0) + height = img.height; + // $(preview).find('.textlayer').text(img.naturalWidth + ' x ' + img.naturalHeight ); + self.updateTextLayer(preview, width + ' x ' + height); + self.updateFileSize(preview, file); + }); + + $(preview).prepend(img); + $(preview).addClass('is_image'); + } + else if(file === null) + { + $(preview).addClass('not_image'); + $(preview).find('.dashicons').removeClass().addClass('dashicons dashicons-no'); + //$(preview).find('.textlayer').text(''); + this.updateTextLayer(preview, ''); + this.updateFileSize(preview, null); + this.debug('File is null'); + } + else { // not an image + $(preview).addClass('not_image is_document'); + $(preview).find('.dashicons').removeClass().addClass('dashicons dashicons-media-document'); + //$(preview).find('.textlayer').text(file.name); + this.updateTextLayer(preview, file.name); + this.updateFileSize(preview, file); + this.debug('Not image, media document'); + } + + if (! is_empty && target_type != source_type) + { + this.debug(target_type + ' not ' + source_type); + var falsePositive = this.checkFalsePositiveType(source_type, target_type); + if (! falsePositive) + this.warningFileType(); + } + + if (! is_empty && emr_options.allowed_mime.indexOf(target_type) == -1) + { + this.debug(target_type + ' not ' + ' in allowed types '); + var falsePositive = this.checkFalsePositiveType(source_type, target_type); + + if (! falsePositive) + this.warningMimeType(); + } + // this.debug(emr_options.allowed_mime); + + } + this.checkFalsePositiveType = function(source_type, target_type) + { + // windows (sigh) reports application/zip as application/x-zip-compressed. Or something else, why not. + if (source_type.indexOf('zip') >= 0 && target_type.indexOf('zip') >= 0) + { + this.debug('Finding ' + source_type + ' ' + target_type + ' close enough, false positive'); + return true; + } + return false; + } + // replace the text, check if text is there ( or hide ), and fix the layout. + this.updateTextLayer = function (preview, newtext) + { + textlayer = $(preview).find('.textlayer'); + textlayer.css('opacity', '0'); + if (newtext !== false) + textlayer.text(newtext); + + if (textlayer.text() !== '') + { + textlayer.css('opacity', '0.7'); + // textlayer.css('margin-left', '-' + (textlayer.width() / 2 ) + 'px'); + } + + }, + this.updateFileSize = function(preview, file) + { + if (file === null) + { + $(preview).find('.image_size').text(''); + return; + } + var bytes = file.size; + if (bytes == 0) { return "0.00 B"; } + var e = Math.floor(Math.log(bytes) / Math.log(1024)); + var size = (bytes/Math.pow(1024, e)).toFixed(2)+' '+' KMGTP'.charAt(e)+'B'; + + $(preview).find('.image_size').text(size); + } + this.checkSubmit = function() + { + var check = ($('input[name="userfile"]').val().length > 0) ? true : false; + + if (check) + { + $('input[type="submit"]').prop('disabled', false); + } + else { + $('input[type="submit"]').prop('disabled', true); + } + }, + this.toggleErrors = function(toggle) + { + $('.form-error').fadeOut(); + $('.form-warning').fadeOut(); + }, + this.checkUpload = function(fileItem) + { + var maxsize = emr_options.maxfilesize; + + if ($('input[name="userfile"]').val().length <= 0) + { + console.info('[EMR] - Upload file value not set in form. Pick a file'); + $('input[name="userfile"]').val(''); + return false; + } + + if (fileItem.size > maxsize) + { + console.info('[EMR] - File too big for uploading - exceeds upload limits'); + this.errorFileSize(fileItem); + $('input[name="userfile"]').val(''); + return false; + } + return true; + }, + this.errorFileSize = function(fileItem) + { + $('.form-error.filesize').find('.fn').text(fileItem.name); + $('.form-error.filesize').fadeIn(); + } + this.warningFileType = function(fileItem) + { + $('.form-warning.filetype').fadeIn(); + } + this.warningMimeType = function(fileItem) + { + $('.form-warning.mimetype').fadeIn(); + } + this.debug = function(message) + { + console.debug(message); + } + this.showReplaceOptions = function(e) + { + $('section.options .location_option').hide(); + var replace_option = $('input[name="replace_type"]:checked').val(); + if (replace_option == 'replace_and_search') + { + $('section.options .location_option').show(); + } + + } + this.dragOverArea = function(e) + { + e.preventDefault(); + e.stopPropagation(); + + if ( this.is_dragging) + return; + + //this.debug('dragover'); + //$('.emr_drop_area').css('border-color', '#83b4d8'); + $('.emr_drop_area').addClass('drop_breakout'); + this.is_dragging = true; + } + this.dragOutArea = function(e) + { + e.preventDefault(); + e.stopPropagation(); + // this.debug('dragout'); + //$('.emr_drop_area').css('border-color', '#b4b9be'); + $('.emr_drop_area').removeClass('drop_breakout'); + this.is_dragging = false; + } + this.fileDrop = function (e) + { + var ev = e.originalEvent; + this.dragOutArea(e); + ev.preventDefault(); + e.preventDefault(); + + if (ev.dataTransfer.items) { + // Use DataTransferItemList interface to access the file(s) + document.getElementById('userfile').files = ev.dataTransfer.files; + $('input[name="userfile"]').trigger('change'); + } + } + } // emrIf + +jQuery(document).ready(function($) +{ + window.enableMediaReplace = new emrIf($); + window.enableMediaReplace.init(); +}); + + + function emrDelayedInit() { + console.log('Checking delayed init '); + if(typeof window.enableMediaReplace == "undefined") { + console.log(emrIf); + window.enableMediaReplace = new emrIf(jQuery); + window.enableMediaReplace.init(); + } + else if (typeof window.enableMediaReplace !== 'undefined') + { + // All fine. + } + else { // Nothing yet, try again. + setTimeout(emrdelayedInit, 3000); + } + } + setTimeout(emrDelayedInit, 3000); diff --git a/wp-content/plugins/enable-media-replace/scss/_datepicker.scss b/wp-content/plugins/enable-media-replace/scss/_datepicker.scss new file mode 100644 index 0000000..055d6d8 --- /dev/null +++ b/wp-content/plugins/enable-media-replace/scss/_datepicker.scss @@ -0,0 +1,421 @@ +// Straight from jquery UI css + +.ui-widget-content { + border: 1px solid #dddddd; + background: #ffffff; + color: #333333; +} + + +.ui-widget-overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; +} +.ui-datepicker { + width: 17em; + padding: .2em .2em 0; + display: none; +} +.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, +.ui-datepicker select.ui-datepicker-year { + width: 45%; +} +.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: center; + 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, +.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%; + font-size: 0; +} + +/* 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, +.ui-datepicker-rtl .ui-datepicker-group { + float: right; +} +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { + border-right-width: 0; + border-left-width: 1px; +} + +/* Icons */ +.ui-datepicker .ui-icon { + display: block; + text-indent: -99999px; + overflow: hidden; + background-repeat: no-repeat; + left: .5em; + top: .3em; +} + +.ui-icon { + width: 16px; + height: 16px; +} +.ui-icon, +.ui-widget-content .ui-icon { + background-image: url("../img/ui-icons_444444_256x240.png"); +} +.ui-widget-header .ui-icon { + background-image: url("../img/ui-icons_444444_256x240.png"); +} +.ui-state-hover .ui-icon, +.ui-state-focus .ui-icon, +.ui-button:hover .ui-icon, +.ui-button:focus .ui-icon { + background-image: url("../img/ui-icons_555555_256x240.png"); +} +.ui-state-active .ui-icon, +.ui-button:active .ui-icon { + background-image: url("../img/ui-icons_ffffff_256x240.png"); +} +.ui-state-highlight .ui-icon, +.ui-button .ui-state-highlight.ui-icon { + background-image: url("../img/ui-icons_777620_256x240.png"); +} + +/* positioning */ +.ui-icon-blank { background-position: 16px 16px; } +.ui-icon-caret-1-n { background-position: 0 0; } +.ui-icon-caret-1-ne { background-position: -16px 0; } +.ui-icon-caret-1-e { background-position: -32px 0; } +.ui-icon-caret-1-se { background-position: -48px 0; } +.ui-icon-caret-1-s { background-position: -65px 0; } +.ui-icon-caret-1-sw { background-position: -80px 0; } +.ui-icon-caret-1-w { background-position: -96px 0; } +.ui-icon-caret-1-nw { background-position: -112px 0; } +.ui-icon-caret-2-n-s { background-position: -128px 0; } +.ui-icon-caret-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: -65px -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: -65px -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: 1px -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-on { background-position: -96px -144px; } +.ui-icon-radio-off { 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; } + +/* Corner radius */ +.ui-corner-all, +.ui-corner-top, +.ui-corner-left, +.ui-corner-tl { + border-top-left-radius: 3px; +} +.ui-corner-all, +.ui-corner-top, +.ui-corner-right, +.ui-corner-tr { + border-top-right-radius: 3px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-left, +.ui-corner-bl { + border-bottom-left-radius: 3px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-right, +.ui-corner-br { + border-bottom-right-radius: 3px; +} diff --git a/wp-content/plugins/enable-media-replace/scss/admin.scss b/wp-content/plugins/enable-media-replace/scss/admin.scss new file mode 100644 index 0000000..befe103 --- /dev/null +++ b/wp-content/plugins/enable-media-replace/scss/admin.scss @@ -0,0 +1,362 @@ +@import 'datepicker'; + +.emr_upload_form +{ + form + { + display: flex; //editor and upsell + .upsell-wrapper + { + margin-left: 10px; + } + } + + + .wrapper + { +// margin: 15px 0; + padding: 18px; + border: 1px solid #ccc; + + .section-header + { + font-size: 18px; + //text-align: center; + border-bottom: 1px solid #ccc; + padding: 6px 0; + margin: 0 0 15px 0; + } + } + + + + .image_chooser.wrapper + { + min-height: 350px; + + .emr_drop_area + { + border: 4px dashed #b4b9be; + max-width: 600px; + padding: 28px 14px; + text-align: center; + position: relative; + h1 { display: none; } + .drop-wrapper + { + margin: 0 auto; + + } + &.drop_breakout + { + position: fixed; + left: 0; + right:0; + bottom: 0; + top: 0; + max-width: none; + border-color: #83b4d8; + border-width: 10px; + z-index: 999999; + background-color: rgba(#444, 0.7); + h1 { + color: #fff; + position: absolute; + font-size: 50px; + line-height: 50px; + margin-top: -25px; + top: 50%; + width: 100%; + text-align: center; + display: block; + } + .drop-wrapper { display: none; } + } + } + .image_previews + { + margin: 15px 0; + .image_placeholder + { + position: relative; + display: inline-block; + margin-right: 25px; + margin-bottom: 10px; + border: 1px solid #ddd; + vertical-align: top; + max-height: 500px; + .textlayer + { + font-size: 25px; + line-height: 25px; + opacity: 0.7; + position: absolute; + color: #ccc; + left: 48%; + top: 50%; + transform: translate(-50%, -50%); + border: 1px dashed #eee; + background-color: #333; + padding: 8px; + //max-width: 100%; + } + .dashicons + { + font-size: 60px; + position: absolute; + top: 50%; + margin-top: -30px; + left: 50%; + margin-left: -30px; + opacity: 0.5; + + } + .image_size + { + text-align: center; + position: absolute; + bottom: -25px; + width: 100%; + } + &.is_image + { + .dashicons::before, .dashicons { display: none } + + + } + &.not_image + { + img { display: none; } + .textlayer { display: none; } + &.is_document{ + .textlayer { + font-size: 18px; + line-height: 20px; + display: block; + + } + } + } // not_image + } // image_placeholder + } // image_previews + } // wrapper + + .form-error, .form-warning + { + background: #fff; + padding: 8px; + border-left: 4px solid #ff0000; + // display: inline-block; + margin: 10px 0; + display: none; + p { + margin: 0; + font-size: 12px; + font-weight: 700; + } + + } + .form-warning + { + border-left: 4px solid #ffb900; + } + + .option-flex-wrapper + { + display: flex; + } + + .replace_type.wrapper + { + flex: 1; + border: 1px solid #ccc; + margin: 15px 0; + .option + { + position: relative; + z-index: 1; + &.disabled + { + // color: #eee; + } + label + { + font-size: 1.2em; + } + .nofeature-notice + { + border: 1px solid #ccc; + padding: 8px; + margin: 0; + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + opacity: 0.8; + z-index: 9; + background: #444; + p { + text-align: center; + color: #fff; + margin: 15px 0; + } + } + } + + } + + .options.wrapper + { + flex: 1; + border: 1px solid #ccc; + padding: 15px; + margin: 15px 0 15px 35px; + .custom_date + { + .emr_datepicker { + width: 150px; + } + .emr_hour, .emr_minute + { + width: 45px; + } + } + ul + { + li + { + input + { + margin-right: 8px; + } + } + } + .option + { + label { vertical-align: top; } + } + .small + { + font-size: 10px; + vertical-align: top; + margin-left: 8px; + } + .custom_date + { + margin: 8px 0 0 25px; + visibility: hidden; + opacity: 0; + span.field-title { + display: inline-block; + margin-bottom: 4px; + color: #444; + //margin-left: 8px; + font-size: 12px; + width: 100%; + text-align: left; + vertical-align: middle; + line-height: 26px; + &::before + { + font-size: 20px; + vertical-align: top; + margin-right: 4px; + } + } + } // custom_date + .location_option + { + display: none; + margin-top: 12px; + label + { + vertical-align: baseline; + margin-right: 8px; + } + } + } + + .form_controls.wrapper + { + clear: both; + margin: 8px 0 15px 0; + border: 0; + padding: 0; + .button + { + padding-left: 20px; + padding-right: 20px; + } + } + + .shortpixel.notice + { + padding: 12px; + } + .shortpixel-offer + { + background: #fff; + width: 250px; + min-height: 270px; + border: 1px solid #ccc; + padding: 15px; + //margin: 0 0 10px 25px; + margin-bottom:25px; + float: right; + clear: both; + h3 { + line-height: 1.3em; // match size + } + &.site-speed + { + background-color: #dcfdff; + .img-wrapper + { + text-align: center; + margin: 0 0 25px 0; + img { max-width: 140px; max-height: 140px; margin: 0; } + } + h3 { + color: #00d0e5; + font-size: 20px; + text-align: center; + margin: 0; + line-height: 1.3em; + } + .button-wrapper + { + text-align: center; + margin-top: 35px; + a { + background-color: #ff0000; + color: #fff; + display: inline-block; + padding: 8px; + text-decoration: none; + font-weight: 700; + font-size: 20px; + } + } + .red { color: #ff0000; } + + } + } + + @media( max-width: 1200px) + { + .image_previews + { + text-align: center; + } + .option-flex-wrapper { + flex-direction: column; + .options.wrapper + { margin-left: 0;} + } + } + @media (max-width: 960px) + { + .upsell-wrapper { display: none; } + } +} // emr_upload_form diff --git a/wp-content/plugins/enable-media-replace/scss/edit_attachment.scss b/wp-content/plugins/enable-media-replace/scss/edit_attachment.scss new file mode 100644 index 0000000..c179e63 --- /dev/null +++ b/wp-content/plugins/enable-media-replace/scss/edit_attachment.scss @@ -0,0 +1,31 @@ + +/* Styling for the edit attachment screen */ +#emr-replace-box, #emr-showthumbs-box +{ + .previewwrapper + { + display: inline-block; + position: relative; + clear: both; + margin: 3px 0; + + img { max-width: 100%; } + span.label + { + font-size: 14px; + color: #fff; + position: absolute; + line-height: 16px; + margin-top: -8px; + top: 50%; + left: 0; right: 0; + background: rgba(0,0,0,0.5); + text-align: center; + padding: 4px 0; + + + } + + } + +} diff --git a/wp-content/plugins/gripuqam-committees/admin/css/gripuqam-committees-admin.css b/wp-content/plugins/gripuqam-committees/admin/css/gripuqam-committees-admin.css new file mode 100644 index 0000000..00c8c7f --- /dev/null +++ b/wp-content/plugins/gripuqam-committees/admin/css/gripuqam-committees-admin.css @@ -0,0 +1,4 @@ +/** + * All of the CSS for your admin-specific functionality should be + * included in this file. + */ \ No newline at end of file diff --git a/wp-content/plugins/gripuqam-committees/admin/js/gripuqam-committees-admin.js b/wp-content/plugins/gripuqam-committees/admin/js/gripuqam-committees-admin.js new file mode 100644 index 0000000..b04717f --- /dev/null +++ b/wp-content/plugins/gripuqam-committees/admin/js/gripuqam-committees-admin.js @@ -0,0 +1,32 @@ +(function( $ ) { + 'use strict'; + + /** + * All of the code for your admin-facing JavaScript source + * should reside in this file. + * + * Note: It has been assumed you will write jQuery code here, so the + * $ function reference has been prepared for usage within the scope + * of this function. + * + * This enables you to define handlers, for when the DOM is ready: + * + * $(function() { + * + * }); + * + * When the window is loaded: + * + * $( window ).load(function() { + * + * }); + * + * ...and/or other possibilities. + * + * Ideally, it is not considered best practise to attach more than a + * single DOM-ready or window-load handler for a particular page. + * Although scripts in the WordPress core, Plugins and Themes may be + * practising this, we should strive to set a better example in our own work. + */ + +})( jQuery ); diff --git a/wp-content/plugins/gripuqam-committees/public/css/gripuqam-committees-public.css b/wp-content/plugins/gripuqam-committees/public/css/gripuqam-committees-public.css new file mode 100644 index 0000000..65bbf96 --- /dev/null +++ b/wp-content/plugins/gripuqam-committees/public/css/gripuqam-committees-public.css @@ -0,0 +1,4 @@ +/** + * All of the CSS for your public-facing functionality should be + * included in this file. + */ \ No newline at end of file diff --git a/wp-content/plugins/gripuqam-committees/public/js/gripuqam-committees-public.js b/wp-content/plugins/gripuqam-committees/public/js/gripuqam-committees-public.js new file mode 100644 index 0000000..071048d --- /dev/null +++ b/wp-content/plugins/gripuqam-committees/public/js/gripuqam-committees-public.js @@ -0,0 +1,32 @@ +(function( $ ) { + 'use strict'; + + /** + * All of the code for your public-facing JavaScript source + * should reside in this file. + * + * Note: It has been assumed you will write jQuery code here, so the + * $ function reference has been prepared for usage within the scope + * of this function. + * + * This enables you to define handlers, for when the DOM is ready: + * + * $(function() { + * + * }); + * + * When the window is loaded: + * + * $( window ).load(function() { + * + * }); + * + * ...and/or other possibilities. + * + * Ideally, it is not considered best practise to attach more than a + * single DOM-ready or window-load handler for a particular page. + * Although scripts in the WordPress core, Plugins and Themes may be + * practising this, we should strive to set a better example in our own work. + */ + +})( jQuery ); diff --git a/wp-content/plugins/svg-support/css/svgs-admin-edit-post.css b/wp-content/plugins/svg-support/css/svgs-admin-edit-post.css new file mode 100644 index 0000000..0eb07fd --- /dev/null +++ b/wp-content/plugins/svg-support/css/svgs-admin-edit-post.css @@ -0,0 +1 @@ +body #set-post-thumbnail,body #postimagediv .inside img[src$=".svg"]{width:100%} diff --git a/wp-content/plugins/svg-support/css/svgs-admin-simple-mode.css b/wp-content/plugins/svg-support/css/svgs-admin-simple-mode.css new file mode 100644 index 0000000..30d1b80 --- /dev/null +++ b/wp-content/plugins/svg-support/css/svgs-admin-simple-mode.css @@ -0,0 +1 @@ +.svgs-advanced{display:none} diff --git a/wp-content/plugins/svg-support/css/svgs-admin.css b/wp-content/plugins/svg-support/css/svgs-admin.css new file mode 100644 index 0000000..8e14357 --- /dev/null +++ b/wp-content/plugins/svg-support/css/svgs-admin.css @@ -0,0 +1 @@ +.svgs-version{font-size:10px;margin-left:7px}.postbox .inside a{text-decoration:none}h3{padding:0 12px}.help-tab-content h3{padding:0}h3.inner-title{padding:0;font-size:1.2em}.metabox-holder .postbox>h3,.metabox-holder .stuffbox>h3,.metabox-holder h2.hndle,.metabox-holder h3.hndle{font-size:1.3em;font-weight:600}.shortpixel-logo img{position:absolute;right:10px;bottom:0;width:140px}table.media .column-title .media-icon img{width:60px} diff --git a/wp-content/plugins/svg-support/css/svgs-attachment.css b/wp-content/plugins/svg-support/css/svgs-attachment.css new file mode 100644 index 0000000..844092b --- /dev/null +++ b/wp-content/plugins/svg-support/css/svgs-attachment.css @@ -0,0 +1 @@ +.attachment svg,.widget_media_image svg{max-width:100%;height:auto} diff --git a/wp-content/plugins/svg-support/js/min/svgs-admin-notice-update-min.js b/wp-content/plugins/svg-support/js/min/svgs-admin-notice-update-min.js new file mode 100644 index 0000000..e09984d --- /dev/null +++ b/wp-content/plugins/svg-support/js/min/svgs-admin-notice-update-min.js @@ -0,0 +1 @@ +jQuery(document).ready(function($){function i(){jQuery.ajax({url:ajaxurl,data:{action:"bodhi_svgs_dismiss_admin_notice"}})}$(".svgs-upgrade-notice .notice-dismiss").click(i)}); diff --git a/wp-content/plugins/svg-support/js/min/svgs-inline-min.js b/wp-content/plugins/svg-support/js/min/svgs-inline-min.js new file mode 100644 index 0000000..1cb5b7d --- /dev/null +++ b/wp-content/plugins/svg-support/js/min/svgs-inline-min.js @@ -0,0 +1 @@ +jQuery(document).ready((function(t){(bodhisvgsInlineSupport=function(){if("true"===ForceInlineSVGActive&&jQuery("img").each((function(){void 0!==jQuery(this).attr("src")&&!1!==jQuery(this).attr("src")&&jQuery(this).attr("src").match(/\.(svg)/)&&(jQuery(this).hasClass(cssTarget.ForceInlineSVG)||jQuery(this).addClass(cssTarget.ForceInlineSVG))})),String.prototype.endsWith||(String.prototype.endsWith=function(t,e){var r=this.toString();("number"!=typeof e||!isFinite(e)||Math.floor(e)!==e||e>r.length)&&(e=r.length),e-=t.length;var s=r.lastIndexOf(t,e);return-1!==s&&s===e}),String.prototype.endsWith=function(t){var e=this.length-t.length;return e>=0&&this.lastIndexOf(t)===e},"true"===ForceInlineSVGActive)var e="img."!==cssTarget.Bodhi?cssTarget.Bodhi:"img.style-svg";else var e="img."!==cssTarget?cssTarget:"img.style-svg";t(e).each((function(e){var r=jQuery(this),s=r.attr("id"),i=r.attr("class"),n=r.attr("src");n.endsWith("svg")&&t.get(n,(function(n){var a=t(n).find("svg"),c=a.attr("id");void 0===s?void 0===c?(s="svg-replaced-"+e,a=a.attr("id",s)):s=c:a=a.attr("id",s),void 0!==i&&(a=a.attr("class",i+" replaced-svg svg-replaced-"+e)),a=a.removeAttr("xmlns:a"),r.replaceWith(a),t(document).trigger("svg.loaded",[s])}),"xml")}))})()})); \ No newline at end of file diff --git a/wp-content/plugins/svg-support/js/svgs-admin-notice-update.js b/wp-content/plugins/svg-support/js/svgs-admin-notice-update.js new file mode 100644 index 0000000..8e4e5d5 --- /dev/null +++ b/wp-content/plugins/svg-support/js/svgs-admin-notice-update.js @@ -0,0 +1,16 @@ +jQuery(document).ready(function ($) { + + function svgsDismissNotice(){ + + jQuery.ajax({ + url: ajaxurl, + data: { + action: 'bodhi_svgs_dismiss_admin_notice' + } + }); + + } + + $('.svgs-upgrade-notice .notice-dismiss').click(svgsDismissNotice); + +}); diff --git a/wp-content/plugins/svg-support/js/svgs-inline.js b/wp-content/plugins/svg-support/js/svgs-inline.js new file mode 100644 index 0000000..9740784 --- /dev/null +++ b/wp-content/plugins/svg-support/js/svgs-inline.js @@ -0,0 +1,110 @@ +jQuery(document).ready(function ($) { + + // Wrap in IIFE so that it can be called again later as bodhisvgsInlineSupport(); + (bodhisvgsInlineSupport = function() { + + // If force inline SVG option is active then add class + if ( ForceInlineSVGActive === 'true' ) { + + // Find all SVG inside img and add class if it hasn't got it + jQuery('img').each(function() { + + // Check if the SRC attribute is present at all + if ( typeof jQuery(this).attr('src') !== typeof undefined && jQuery(this).attr('src') !== false) { + + // Pick only those with the extension we want + if ( jQuery(this).attr('src').match(/\.(svg)/) ) { + + // Add our class name + if ( !jQuery(this).hasClass(cssTarget.ForceInlineSVG) ) { + jQuery(this).addClass(cssTarget.ForceInlineSVG); + } + } + } + }); + } + + // Polyfill to support all ye old browsers + // delete when not needed in the future + if (!String.prototype.endsWith) { + String.prototype.endsWith = function(searchString, position) { + var subjectString = this.toString(); + if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) { + position = subjectString.length; + } + position -= searchString.length; + var lastIndex = subjectString.lastIndexOf(searchString, position); + return lastIndex !== -1 && lastIndex === position; + }; + } // end polyfill + + // Another snippet to support IE11 + String.prototype.endsWith = function(pattern) { + var d = this.length - pattern.length; + return d >= 0 && this.lastIndexOf(pattern) === d; + }; + // End snippet to support IE11 + + // Check to see if user set alternate class + if ( ForceInlineSVGActive === 'true' ) { + var target = ( cssTarget.Bodhi !== 'img.' ? cssTarget.Bodhi : 'img.style-svg' ); + } else { + var target = ( cssTarget !== 'img.' ? cssTarget : 'img.style-svg' ); + } + + $(target).each(function(index){ + var $img = jQuery(this); + var imgID = $img.attr('id'); + var imgClass = $img.attr('class'); + var imgURL = $img.attr('src'); + + // Set svg size to the original img size + // var imgWidth = $img.attr('width'); + // var imgHeight = $img.attr('height'); + + if (!imgURL.endsWith('svg')) { + return; + } + + $.get(imgURL, function(data) { + + // Get the SVG tag, ignore the rest + var $svg = $(data).find('svg'); + + var svgID = $svg.attr('id'); + + // Add replaced image's ID to the new SVG if necessary + if(typeof imgID === 'undefined') { + if(typeof svgID === 'undefined') { + imgID = 'svg-replaced-'+index; + $svg = $svg.attr('id', imgID); + } else { + imgID = svgID; + } + } else { + $svg = $svg.attr('id', imgID); + } + + // Add replaced image's classes to the new SVG + if(typeof imgClass !== 'undefined') { + $svg = $svg.attr('class', imgClass+' replaced-svg svg-replaced-'+index); + } + + // Remove any invalid XML tags as per http://validator.w3.org + $svg = $svg.removeAttr('xmlns:a'); + + // Add size attributes + // $svg = $svg.attr('width', imgWidth); + // $svg = $svg.attr('height', imgHeight); + + // Replace image with new SVG + $img.replaceWith($svg); + + $(document).trigger('svg.loaded', [imgID]); + + }, 'xml'); + }); + + })(); // Execute immediately + +}); \ No newline at end of file diff --git a/wp-content/plugins/svg-support/scss/svgs-admin-edit-post.scss b/wp-content/plugins/svg-support/scss/svgs-admin-edit-post.scss new file mode 100644 index 0000000..ed54b8b --- /dev/null +++ b/wp-content/plugins/svg-support/scss/svgs-admin-edit-post.scss @@ -0,0 +1,10 @@ +/** + * Featured Image Display + * + * Fixes the 0px featured image on edit screen + * WooCommerce Product, Sensei Course + */ +body #set-post-thumbnail, +body #postimagediv .inside img[src$=".svg"] { + width: 100%; +} \ No newline at end of file diff --git a/wp-content/plugins/svg-support/scss/svgs-admin-simple-mode.scss b/wp-content/plugins/svg-support/scss/svgs-admin-simple-mode.scss new file mode 100644 index 0000000..62c99bb --- /dev/null +++ b/wp-content/plugins/svg-support/scss/svgs-admin-simple-mode.scss @@ -0,0 +1,6 @@ +/** + * Hide advanced features + */ +.svgs-advanced { + display: none; +} \ No newline at end of file diff --git a/wp-content/plugins/svg-support/scss/svgs-admin.scss b/wp-content/plugins/svg-support/scss/svgs-admin.scss new file mode 100644 index 0000000..0455230 --- /dev/null +++ b/wp-content/plugins/svg-support/scss/svgs-admin.scss @@ -0,0 +1,45 @@ +/** + * Settings Page + */ +.svgs-version { + font-size: 10px; + margin-left: 7px; +} +.postbox .inside a { + text-decoration: none; +} +h3 { + padding: 0 12px; +} +.help-tab-content h3 { + padding: 0; +} +h3.inner-title { + padding: 0; + font-size: 1.2em; +} + +.metabox-holder { + .postbox>h3, + .stuffbox>h3, + h2.hndle, + h3.hndle { + font-size: 1.3em; + font-weight: 600; + } +} + +.shortpixel-logo img { + position: absolute; + right: 10px; + bottom: 0; + width: 140px; +} + +/** + * Media Library + */ +table.media .column-title .media-icon img { + width: 60px; + // height: 60px; +} diff --git a/wp-content/plugins/svg-support/scss/svgs-attachment.scss b/wp-content/plugins/svg-support/scss/svgs-attachment.scss new file mode 100644 index 0000000..ba5bbe9 --- /dev/null +++ b/wp-content/plugins/svg-support/scss/svgs-attachment.scss @@ -0,0 +1,17 @@ +// .attachment img[src$=".svg"], +// .widget_media_image img[src$=".svg"] { +// width: 100%; +// } + +.attachment, +.widget_media_image { + + // img[src$=".svg"] { + // width: 100%; + // } + + svg { + max-width: 100%; + height: auto; + } +} \ No newline at end of file diff --git a/wp-content/plugins/tinymce-advanced/block-editor/classic-paragraph.css b/wp-content/plugins/tinymce-advanced/block-editor/classic-paragraph.css new file mode 100644 index 0000000..7b309f7 --- /dev/null +++ b/wp-content/plugins/tinymce-advanced/block-editor/classic-paragraph.css @@ -0,0 +1 @@ +div[data-type="tadv/classic-paragraph"].is-selected .block-library-classic__toolbar,div[data-type="tadv/classic-paragraph"].is-typing .block-library-classic__toolbar,div[data-type="tadv/classic-paragraph"] div.mce-toolbar-grp{border-color:rgba(66,88,99,.35)}div[data-type="tadv/classic-paragraph"] .block-library-classic__toolbar:empty{display:none}div[data-type="tadv/classic-paragraph"].is-selected .block-library-classic__toolbar,div[data-type="tadv/classic-paragraph"].is-typing .block-library-classic__toolbar{display:block;z-index:31} \ No newline at end of file diff --git a/wp-content/plugins/tinymce-advanced/block-editor/classic-paragraph.js b/wp-content/plugins/tinymce-advanced/block-editor/classic-paragraph.js new file mode 100644 index 0000000..0814911 --- /dev/null +++ b/wp-content/plugins/tinymce-advanced/block-editor/classic-paragraph.js @@ -0,0 +1 @@ +!function(e){var t={};function o(r){if(t[r])return t[r].exports;var n=t[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,o),n.l=!0,n.exports}o.m=e,o.c=t,o.d=function(e,t,r){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(o.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)o.d(r,n,function(t){return e[t]}.bind(null,n));return r},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=1)}([,function(e,t,o){"use strict";o.r(t);const{wp:r}=window,{debounce:n}=window._,c=window.tadvBlockRegister,{BlockControls:a,useBlockProps:i}=r.blockEditor,{ToolbarGroup:s}=r.components,{Component:l,createElement:d,Fragment:u,useEffect:p,useRef:m}=r.element,{BACKSPACE:b,DELETE:f,F10:g,isKeyboardEvent:k}=r.keycodes;const{RawHTML:y,createElement:h}=wp.element;const{join:v,split:w,create:_,toHTMLString:B}=wp.richText,{createBlock:C,getBlockContent:E}=wp.blocks;var P={from:(()=>{const e=[];return["core-embed/twitter","core-embed/youtube","core-embed/facebook","core-embed/instagram","core-embed/wordpress","core-embed/soundcloud","core-embed/spotify","core-embed/flickr","core-embed/vimeo","core-embed/animoto","core-embed/cloudup","core-embed/collegehumor","core-embed/crowdsignal","core-embed/dailymotion","core-embed/hulu","core-embed/imgur","core-embed/issuu","core-embed/kickstarter","core-embed/meetup-com","core-embed/mixcloud","core-embed/polldaddy","core-embed/reddit","core-embed/reverbnation","core-embed/screencast","core-embed/scribd","core-embed/slideshare","core-embed/smugmug","core-embed/speaker","core-embed/speaker-deck","core-embed/ted","core-embed/tumblr","core-embed/videopress","core-embed/wordpress-tv","core-embed/amazon-kindle"].forEach(t=>{e.push({type:"block",blocks:[t],transform:e=>{if(!e.url)return C("tadv/classic-paragraph",{content:""});const o=E(C(t,e));let r,n="

"+e.url+"

";return o&&o.indexOf("")>-1&&o.replace(/]*>([\s\S]*?)<\/figcaption>/,(function(e,t){r=t})),n+=r?"

"+r+"

":'


',C("tadv/classic-paragraph",{content:n})}})}),["core/paragraph","core/image","core/heading","core/gallery","core/list","core/quote","core/code","core/columns","core/freeform","core/html","core/media-text","core/missing","core/preformatted","core/pullquote","core/subhead","core/table","core/text-columns","core/verse"].forEach(t=>{e.push({type:"block",blocks:[t],transform:e=>{let o=E(C(t,e));return(!o||o.indexOf("")>-1)&&(o+='


'),C("tadv/classic-paragraph",{content:o})}})}),e.push({type:"raw",priority:21,isMatch:()=>!0},{type:"block",isMultiBlock:!0,blocks:["core/paragraph"],transform:e=>{const t=B({value:v(e.map(({content:e})=>_({html:e})),"\u2028"),multilineTag:"p"});return C("tadv/classic-paragraph",{content:t})}},{type:"block",isMultiBlock:!0,blocks:["tadv/classic-paragraph"],transform:e=>{const t=B({value:v(e.map(({content:e})=>_({html:e})),"\u2028")});return C("tadv/classic-paragraph",{content:t})}},{type:"block",isMultiBlock:!0,blocks:["core/freeform"],transform:e=>{const t=B({value:v(e.map(({content:e})=>_({html:e})),"\u2028")});return C("tadv/classic-paragraph",{content:t})}}),e})(),to:[{type:"block",blocks:["core/freeform"],transform:e=>C("core/freeform",e)},{type:"block",blocks:["core/html"],transform:e=>C("core/html",e)}]};const{__:x}=wp.i18n,T=window.tadvBlockRegister,{name:M,attributes:S,category:L}={name:"tadv/classic-paragraph",category:"common",attributes:{content:{type:"string",source:"html"},align:{type:"string"}}};var N={name:M,attributes:S,category:L,title:T.classicParagraphTitle,description:T.description,keywords:[x("text")],icon:"welcome-widgets-menus",supports:{className:!1,customClassName:!1,reusable:!0},merge:(e,t)=>({content:(e.content||"")+(t.content||"")}),transforms:P,edit:function({clientId:e,attributes:{content:t},setAttributes:o,onReplace:a}){const s=m(!1);return p(()=>{if(!s.current)return;const o=window.tinymce.get(`editor-${e}`);let r;o&&(r=o.getContent()),r!==t&&o.setContent(t||"")},[t]),p(()=>{const{baseURL:c,suffix:i}=window.wpEditorL10n.tinymce;function l(e){let r;t&&e.on("loadContent",()=>e.setContent(t)),e.on("blur",()=>{r=e.selection.getBookmark(2,!0);const t=document.querySelector(".interface-interface-skeleton__content"),n=t.scrollTop;return o({content:e.getContent()}),e.once("focus",()=>{r&&(e.selection.moveToBookmark(r),t.scrollTop!==n&&(t.scrollTop=n))}),!1}),e.on("mousedown touchstart",()=>{r=null});const c=n(()=>{const t=e.getContent();t!==e._lastChange&&(e._lastChange=t,o({content:t}))},250);e.on("Paste Change input Undo Redo",c),e.on("remove",c.cancel),e.on("keydown",t=>{k.primary(t,"z")&&t.stopPropagation(),t.keyCode!==b&&t.keyCode!==f||!function(e){const t=e.getBody();return!(t.childNodes.length>1)&&(0===t.childNodes.length||!(t.childNodes[0].childNodes.length>1)&&/^\n?$/.test(t.innerText||t.textContent))}(e)||(a([]),t.preventDefault(),t.stopImmediatePropagation());const{altKey:o}=t;o&&t.keyCode===g&&t.stopPropagation()}),e.on("init",()=>{const t=e.getBody();t.ownerDocument.activeElement===t&&(t.blur(),e.focus())})}function d(){const{settings:t}=window.wpEditorL10n.tinymce;r.oldEditor.initialize(`editor-${e}`,{tinymce:{...t,inline:!0,content_css:!1,fixed_toolbar_container:`#toolbar-${e}`,setup:l}})}function u(){"complete"===document.readyState&&d()}return s.current=!0,window.tinymce.EditorManager.overrideDefaults({base_url:c,suffix:i}),"complete"===document.readyState?d():document.addEventListener("readystatechange",u),()=>{document.removeEventListener("readystatechange",u),r.oldEditor.remove(`editor-${e}`)}},[]),d("div",i(),d("div",{key:"toolbar",id:`toolbar-${e}`,className:"block-library-classic__toolbar tma-classic-paragraph__toolbar",onClick:function(){const t=window.tinymce.get(`editor-${e}`);t&&t.focus()},"data-placeholder":c.classicParagraphTitle,onKeyDown:function(e){e.stopPropagation(),e.nativeEvent.stopImmediatePropagation()}}),d("div",{key:"editor",id:`editor-${e}`,className:"wp-block-freeform block-library-rich-text__tinymce tma-classic-paragraph"}))},save:function({attributes:e}){const{content:t}=e;return h(y,null,t)}};const{dispatch:O,select:j}=wp.data,{createBlock:R,rawHandler:$}=wp.blocks;var D=function(){const e=j("core/block-editor").getSelectedBlock();let t;if(e){let o=e.attributes.content;o?(/

/.test(o)&&(o=o.replace(/

/g,"

")),t=$({HTML:o})):t=R("core/paragraph"),O("core/block-editor").replaceBlocks(e.clientId,t)}};!function(){const e=window.wp,t=window.tadvBlockRegister;if(!e||!t)return;const{createElement:o}=e.element,{__:r}=e.i18n,{addFilter:n}=e.hooks,{PluginBlockSettingsMenuItem:c}=e.editPost,{registerPlugin:a}=e.plugins,{registerBlockType:i,setDefaultBlockName:s}=e.blocks;t.classicParagraph?(i("tadv/classic-paragraph",N),a("tadv-add-submenu",{render:()=>(t.hybridMode&&s("tadv/classic-paragraph"),o(c,{allowedBlocks:["tadv/classic-paragraph"],icon:"screenoptions",label:r("Convert to Blocks"),onClick:D}))})):t.hybridMode&&a("tadv-set-default-block",{render:()=>(s("core/freeform"),null)})}()}]); \ No newline at end of file diff --git a/wp-content/plugins/tinymce-advanced/block-editor/richtext-buttons.css b/wp-content/plugins/tinymce-advanced/block-editor/richtext-buttons.css new file mode 100644 index 0000000..001c506 --- /dev/null +++ b/wp-content/plugins/tinymce-advanced/block-editor/richtext-buttons.css @@ -0,0 +1 @@ +.tadv-buttons-panel .components-toolbar__control.tadv-icon-button>svg{box-sizing:border-box;outline:none;box-shadow:none}.tadv-buttons-panel .components-toolbar{border:none}.tadv-mark-icon{background-color:#fff9c0;background-clip:content-box} \ No newline at end of file diff --git a/wp-content/plugins/tinymce-advanced/block-editor/richtext-buttons.js b/wp-content/plugins/tinymce-advanced/block-editor/richtext-buttons.js new file mode 100644 index 0000000..0b97da4 --- /dev/null +++ b/wp-content/plugins/tinymce-advanced/block-editor/richtext-buttons.js @@ -0,0 +1 @@ +!function(t){var e={};function o(r){if(e[r])return e[r].exports;var n=e[r]={i:r,l:!1,exports:{}};return t[r].call(n.exports,n,n.exports,o),n.l=!0,n.exports}o.m=t,o.c=e,o.d=function(t,e,r){o.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},o.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(o.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)o.d(r,n,function(e){return t[e]}.bind(null,n));return r},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,"a",e),e},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.p="",o(o.s=0)}([function(t,e,o){"use strict";o.r(e);const r=window.tadvBlockButtons,{wp:n}=window,{get:c}=window.lodash,{createElement:a}=n.element,{InspectorControls:l,PanelColorSettings:i}=n.blockEditor,{registerFormatType:s,applyFormat:u,removeFormat:d,getActiveFormat:m}=n.richText;function p(t){return(t=t.replace(/.*?(background-)?color:\s*/,"")).replace(/[; ]+$/,"")}const h=window.tadvBlockButtons||{},{wp:v}=window,{RichTextToolbarButton:g}=v.blockEditor,{registerFormatType:f,removeFormat:b}=v.richText,{createElement:y}=v.element,{ToolbarButton:k}=v.components,w=h.strRemoveFormatting||"Clear formatting";let F;function T(t){const e=[];return F||(F=h.formats_to_remove?h.formats_to_remove.split(","):["core/bold","core/italic","core/code","core/underline","core/strikethrough","core/text-color","tadv/sup","tadv/sub","tadv/mark","tadv/color-panel","tadv/background-color-panel"]),t.forEach(t=>{t&&t.forEach(t=>{F.indexOf(t.type)>-1&&-1===e.indexOf(t.type)&&e.push(t.type)})}),e}function C(t){let e=t.formats;if(!e.length)return t;let o=0,r=e.length;t.end>t.start&&(o=t.start,r=t.end,e=e.slice(o,r));const n=T(e);return n.length?(n.forEach(e=>{t=b(t,e,o,r)}),t):t}const{wp:x}=window,{createElement:B,Fragment:A}=(window.tadvBlockButtons,x.element),{__:N}=x.i18n,{ToolbarButton:E}=x.components,{RichTextToolbarButton:S,RichTextShortcut:_}=x.blockEditor,{registerFormatType:O,getActiveFormat:P,toggleFormat:R,applyFormat:L,removeFormat:M}=x.richText,U=N("Strikethrough");function j(t,e,o){e(R(t,{type:"core/strikethrough"})),o&&o()}const{wp:z}=window,{createElement:I,Fragment:G}=z.element,{__:H}=z.i18n,{ToolbarButton:V}=z.components,{RichTextToolbarButton:$,RichTextShortcut:q}=z.blockEditor,{registerFormatType:D,getActiveFormat:J,toggleFormat:K,remove:Q,applyFormat:W}=z.richText,X=H("Inline Code");function Y(t,e,o){e(K(t,{type:"core/code"})),o&&o()}const{wp:Z}=window,tt=window.tadvBlockButtons||{},{createElement:et,Fragment:ot}=Z.element,{__:rt}=Z.i18n,{ToolbarButton:nt}=Z.components,{RichTextToolbarButton:ct,RichTextShortcut:at}=Z.blockEditor,{Path:lt,SVG:it}=Z.components,{registerFormatType:st,getActiveFormat:ut,toggleFormat:dt,applyFormat:mt,removeFormat:pt}=Z.richText,ht=et(it,{viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg",className:"dashicon tadv-mark-icon"},et(lt,{"aria-hidden":"true",role:"img",focusable:"false",width:"20",height:"20",d:"M13.23 15h1.9L11 4H9L5 15h1.88l1.07-3h4.18zm-1.53-4.54H8.51L10 5.6z"})),vt=tt.strMark;function gt(t,e,o){e(dt(t,{type:"tadv/mark"})),o&&o()}const{wp:ft}=window,bt=window.tadvBlockButtons||{},{createElement:yt,Fragment:kt}=ft.element,{__:wt}=ft.i18n,{ToolbarButton:Ft}=ft.components,{RichTextToolbarButton:Tt,RichTextShortcut:Ct}=ft.blockEditor,{registerFormatType:xt,getActiveFormat:Bt,applyFormat:At,removeFormat:Nt}=ft.richText;function Et(t,e,o,r){if(t)o(Nt(e,"core/underline"));else{o(At(e,{type:"core/underline",attributes:{style:"text-decoration: underline"}}))}r&&r()}const{wp:St}=window,_t=window.tadvBlockButtons,{createElement:Ot,Fragment:Pt}=St.element,{registerFormatType:Rt,getActiveFormat:Lt,toggleFormat:Mt}=St.richText,{ToolbarButton:Ut}=St.components,{RichTextToolbarButton:jt,RichTextShortcut:zt}=St.blockEditor,{Path:It,SVG:Gt}=St.components,Ht=Ot(Gt,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},Ot(It,{"aria-hidden":"true",role:"img",focusable:"false",d:"M16.9 10.3l.8-1.3c.4-.6.7-1.2.9-1.6.2-.4.3-.8.3-1.2 0-.3-.1-.7-.2-1-.2-.2-.4-.4-.7-.6-.3-.2-.6-.3-1-.3s-.8.1-1.1.2c-.3.1-.7.3-1 .6l.1 1.3c.3-.3.5-.5.8-.6s.6-.2.9-.2c.3 0 .5.1.7.2.2.2.2.4.2.7 0 .3-.1.5-.2.8-.1.3-.4.7-.8 1.3l-1.8 2.8h4.3v-1.2h-2.2zm-2.8-3.1h-2L9.5 11 6.9 7.2h-2l3.6 5.3L4.7 18h2l2.7-4 2.7 4h2l-3.8-5.5 3.8-5.3z"})),Vt=Ot(Gt,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},Ot(It,{"aria-hidden":"true",role:"img",focusable:"false",d:"M16.9 18.3l.8-1.2c.4-.6.7-1.2.9-1.6.2-.4.3-.8.3-1.2 0-.3-.1-.7-.2-1-.1-.3-.4-.5-.6-.7-.3-.2-.6-.3-1-.3s-.8.1-1.1.2c-.3.1-.7.3-1 .6l.2 1.3c.3-.3.5-.5.8-.6s.6-.2.9-.2c.3 0 .5.1.7.2.2.2.2.4.2.7 0 .3-.1.5-.2.8-.1.3-.4.7-.8 1.3L15 19.4h4.3v-1.2h-2.4zM14.1 7.2h-2L9.5 11 6.9 7.2h-2l3.6 5.3L4.7 18h2l2.7-4 2.7 4h2l-3.8-5.5 3.8-5.3z"}));function $t(t,e,o,r){o(Mt(e,{type:t})),r&&r()}function qt({type:t,tagName:e,title:o,character:r,icon:n},c){Rt(t,{title:o,tagName:e,className:null,edit({value:e,onChange:a,onFocus:l,isActive:i}){let s=null;return c||(s=Ot(jt,{title:o,icon:n,onClick:()=>$t(t,e,a,l),isActive:i,shortcutType:"primary",shortcutCharacter:r})),Ot(Pt,null,Ot(zt,{type:"primary",character:r,onUse:()=>$t(t,e,a)}),s)}})}const{wp:Dt}=window,{createElement:Jt}=Dt.element,{select:Kt}=Dt.data,{addFilter:Qt}=Dt.hooks,{PanelBody:Wt,Toolbar:Xt}=Dt.components,{InspectorControls:Yt}=Dt.blockEditor,{registerFormatType:Zt,unregisterFormatType:te}=Dt.richText,ee=window.tadvBlockButtons||{},oe=ee.buttons?ee.buttons.split(","):[],re=ee.panelButtons?ee.panelButtons.split(","):[],ne=ee.unusedButtons?ee.unusedButtons.split(","):[],ce={"tadv/mark":function(t){st("tadv/mark",{title:vt,tagName:"mark",className:null,edit({value:e,onChange:o,onFocus:r,isActive:n}){let c=null;return t||(c=et(ct,{title:vt,icon:ht,onClick:()=>gt(e,o,r),className:"tadv-icon-button-mark",isActive:n,shortcutType:"access",shortcutCharacter:"m"})),et(ot,null,et(at,{type:"access",character:"m",onUse:()=>gt(e,o)}),c)}})},"tadv/removeformat":function(t){f("tadv/removeformat",{title:w,tagName:"u",className:"remove-format",edit:({value:e,onChange:o,onFocus:r,isActive:n})=>t?null:y(g,{icon:"editor-removeformatting",title:w,onClick:()=>o(C(e)),isActive:null})})},"core/code":function(t){D("core/code",{title:X,tagName:"code",className:null,__unstableInputRule(t){const{start:e,text:o}=t;if("`"!==o.slice(e-1,e))return t;const r=o.slice(0,e-1).lastIndexOf("`");if(-1===r)return t;const n=r,c=e-2;return n===c?t:(t=Q(t,n,n+1),t=Q(t,c,c+1),t=W(t,{type:"core/code"},n,c))},edit({value:e,onChange:o,onFocus:r,isActive:n}){let c=null;return t||(c=I($,{icon:"editor-code",title:X,onClick:()=>Y(e,o,r),isActive:n,shortcutType:"access",shortcutCharacter:"x"})),I(G,null,I(q,{type:"access",character:"x",onUse:()=>Y(e,o)}),c)}})},"core/strikethrough":function(t){O("core/strikethrough",{name:"core/strikethrough",title:U,tagName:"s",className:null,edit({value:e,onChange:o,onFocus:r,isActive:n}){let c=null;return t||(c=B(S,{icon:"editor-strikethrough",title:U,onClick:()=>j(e,o,r),isActive:n,shortcutType:"access",shortcutCharacter:"d"})),B(A,null,B(_,{type:"access",character:"d",onUse:()=>j(e,o)}),c)}})},"core/underline":function(t){xt("core/underline",{title:bt.strUnderline,tagName:"span",className:"underline",attributes:{style:"style"},edit({value:e,onChange:o,onFocus:r,isActive:n}){let c=null;return t||(c=yt(Tt,{title:bt.strUnderline,icon:"editor-underline",onClick:()=>Et(n,e,o,r),className:null,isActive:n,shortcutType:"primary",shortcutCharacter:"u"})),yt(kt,null,yt(Ct,{type:"primary",character:"u",onUse:()=>Et(n,e,o)}),c)}})},"core/subscript":function(t){qt({type:"core/subscript",tagName:"sub",title:_t.strSubscript,character:",",icon:Vt},t)},"core/superscript":function(t){qt({type:"core/superscript",tagName:"sup",title:_t.strSuperscript,character:".",icon:Ht},t)}},ae={"tadv/mark":function({value:t,onChange:e,onFocus:o,isActive:r}){return et(nt,{key:"tadv/mark",icon:"editor-textcolor",className:"tadv-icon-button tadv-icon-button-mark",isActive:ut(t,"tadv/mark"),title:vt,onClick:()=>gt(t,e,o)})},"tadv/removeformat":function({value:t,onChange:e,onFocus:o,isActive:r}){return y(k,{key:"tadv/removeformat",icon:"editor-removeformatting",className:"tadv-icon-button",title:w,onClick:()=>e(C(t))})},"core/code":function({value:t,onChange:e,onFocus:o,isActive:r}){return I(V,{key:"core/code",icon:"editor-code",className:"tadv-icon-button",isActive:J(t,"core/code"),title:X,onClick:()=>Y(t,e,o)})},"core/strikethrough":function({value:t,onChange:e,onFocus:o,isActive:r}){return B(E,{key:"core/strikethrough",icon:"editor-strikethrough",className:"tadv-icon-button",isActive:P(t,"core/strikethrough"),title:U,onClick:()=>j(t,e,o)})},"core/underline":function({value:t,onChange:e,onFocus:o,isActive:r}){const n=!!Bt(t,"core/underline");return yt(Ft,{key:"core/underline",icon:"editor-underline",className:"tadv-icon-button",isActive:n,title:bt.strUnderline,onClick:()=>Et(n,t,e,o)})},"core/subscript":function({value:t,onChange:e,onFocus:o,isActive:r}){return Ot(Ut,{key:"core/subscript",icon:Vt,className:"tadv-icon-button",isActive:Lt(t,"core/subscript"),title:_t.strSubscript,onClick:()=>$t("core/subscript",t,e,o)})},"core/superscript":function({value:t,onChange:e,onFocus:o,isActive:r}){return Ot(Ut,{key:"core/superscript",icon:Ht,className:"tadv-icon-button",isActive:Lt(t,"core/superscript"),title:_t.strSuperscript,onClick:()=>$t("core/superscript",t,e,o)})}};function le(t){(function(t){const e=Kt("core/rich-text").getFormatTypes();let o=!1;return e.forEach(e=>{e.name===t&&(o=!0)}),o})(t)&&te(t)}function ie(){ne.length&&ne.forEach(t=>{le(t)}),oe.forEach(t=>{ce.hasOwnProperty(t)&&(le(t),ce[t].call(null))}),re.length&&(re.forEach(t=>{-1===oe.indexOf(t)&&ce.hasOwnProperty(t)&&(le(t),ce[t].call(null,"panel"))}),Zt("tadv/tadv-format-panel",{title:ee.strFormatting,tagName:"span",className:"tadv-format-panel",edit({value:t,onChange:e,onFocus:o,isActive:r}){const n=[];return re.forEach(c=>{ae.hasOwnProperty(c)&&n.push(ae[c].call(null,{value:t,onChange:e,onFocus:o,isActive:r}))}),Jt(Yt,null,Jt(Wt,{title:ee.strFormatting,className:"tadv-buttons-panel"},Jt(Xt,null,n)))}})),function(){if(!r.colorPanel)return;const t=r.colorPanel.indexOf("tadv/color-panel")>-1,e=r.colorPanel.indexOf("tadv/background-color-panel")>-1;t&&s("tadv/color-panel",{title:r.strTextColor,tagName:"span",className:"tadv-color",attributes:{style:"style"},edit({isActive:t,value:o,onChange:n}){let s,h;if(t){const t=m(o,"tadv/color-panel"),e=c(t,["attributes","style"])||"",r=m(o,"tadv/background-color-panel"),n=c(r,["attributes","style"])||"";s=p(e),h=p(n)}const v=[{value:s,onChange:t=>{n(t?u(o,{type:"tadv/color-panel",attributes:{style:"color:"+t}}):d(o,"tadv/color-panel"))},label:r.strTextColorLabel}];return e&&v.push({value:h,onChange:t=>{n(t?u(o,{type:"tadv/background-color-panel",attributes:{style:"background-color:"+t}}):d(o,"tadv/background-color-panel"))},label:r.strBackgroundColorLabel}),a(l,null,a(i,{title:r.strTextColor,initialOpen:!1,colorSettings:v}))}}),s("tadv/background-color-panel",{title:r.strBackgroundColor,tagName:"span",className:"tadv-background-color",attributes:{style:"style"},edit({isActive:o,value:n,onChange:s}){if(!e||t)return null;let h;if(o){const t=m(n,"tadv/background-color-panel");h=p(c(t,["attributes","style"])||"")}const v=[{value:h,onChange:t=>{s(t?u(n,{type:"tadv/background-color-panel",attributes:{style:"background-color:"+t}}):d(n,"tadv/background-color-panel"))},label:r.strBackgroundColorLabel}];return a(l,null,a(i,{title:r.strTextColor,initialOpen:!1,colorSettings:v}))}})}()}let se;Qt("blocks.registerBlockType","tadv-register-formats",(function(t){return se||(ie(),se=!0),t}))}]); \ No newline at end of file diff --git a/wp-content/plugins/tinymce-advanced/block-editor/tma-block-editor.css b/wp-content/plugins/tinymce-advanced/block-editor/tma-block-editor.css new file mode 100644 index 0000000..2d45658 --- /dev/null +++ b/wp-content/plugins/tinymce-advanced/block-editor/tma-block-editor.css @@ -0,0 +1 @@ +div[data-type="core/freeform"].is-selected .block-library-classic__toolbar,div[data-type="core/freeform"].is-typing .block-library-classic__toolbar{z-index:31}.block-library-classic__toolbar .mce-btn .mce-txt{font-size:13px;color:#454545}.mce-tinymce-inline .mce-menubar>div,.mce-tinymce-inline .mce-toolbar .mce-btn-group>div{white-space:normal}div.mce-menubar,div.mce-menubar *{box-sizing:border-box}.block-library-classic__toolbar .mce-menubar{padding:1px}.block-library-classic__toolbar .mce-menubar .mce-menubtn button span{font-size:13px}.block-library-classic__toolbar .mce-menubar i.mce-caret{margin-top:.4em}.block-library-classic__toolbar .mce-menubar .mce-flow-layout-item{margin:2px 0}div.mce-menubar.mce-toolbar .mce-btn button{padding:3px 4px 2px}div.mce-menubar{border-color:#e5e5e5;background:#fff;border-width:0 0 1px}div.mce-menubar .mce-menubtn:focus{color:#124964;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}div.mce-menu-item-sep:hover,div.mce-menu .mce-menu-item-sep{border-bottom:1px solid #ddd;height:0;margin:5px 0}div.mce-menubtn span{margin-right:0;padding-left:3px}div.mce-menu-has-icons i.mce-ico:before{margin-left:0}div.mce-menu-has-icons i.mce-ico{line-height:18px;width:18px;height:18px}.wp-core-ui .mce-menu-item .mce-text{font-size:13px}.block-library-classic__toolbar .mce-menubar .mce-menubtn.mce-active,.block-library-classic__toolbar .mce-menubar .mce-menubtn:focus,.block-library-classic__toolbar .mce-menubar .mce-menubtn:hover{border-color:transparent}.block-library-classic__toolbar .mce-menubar .mce-menubtn.mce-active span,.block-library-classic__toolbar .mce-menubar .mce-menubtn:focus span,.block-library-classic__toolbar .mce-menubar .mce-menubtn:hover span{color:#000}.mce-inline-toolbar-grp div.wp-link-input{margin:2px 4px}.mce-inline-toolbar-grp div.wp-link-input input{padding:4px}div.mce-menu-item.mce-menu-item-preview.mce-active:hover,div.mce-menu .mce-menu-item-normal.mce-active,div.mce-menu .mce-menu-item-preview.mce-active,div.mce-menu .mce-menu-item.mce-selected,div.mce-menu .mce-menu-item:focus,div.mce-menu .mce-menu-item:hover{background:#0073aa;color:#fff}div.mce-menu-item.mce-active .mce-menu-shortcut,div.mce-menu-item.mce-disabled:hover .mce-ico,div.mce-menu-item.mce-disabled:hover .mce-text,div.mce-menu-item.mce-menu-item-preview.mce-active .mce-ico,div.mce-menu-item.mce-menu-item-preview.mce-active .mce-text,div.mce-menu-item:focus .mce-ico,div.mce-menu-item:focus .mce-menu-shortcut,div.mce-menu-item:focus .mce-text,div.mce-menu-item:hover .mce-ico,div.mce-menu-item:hover .mce-menu-shortcut,div.mce-menu-item:hover .mce-text{color:inherit}div.mce-menu .mce-menu-item.mce-disabled{cursor:default}div.mce-menu .mce-menu-item.mce-disabled:hover{background:#ccc}div.mce-inline-toolbar-grp .mce-btn.mce-active:hover button,div.mce-inline-toolbar-grp .mce-btn.mce-active:hover i,div.mce-inline-toolbar-grp .mce-btn.mce-active button,div.mce-inline-toolbar-grp .mce-btn.mce-active i,div.mce-inline-toolbar-grp .mce-btn:hover button,div.mce-inline-toolbar-grp .mce-btn:hover i,div.mce-toolbar-grp .mce-btn.mce-active:hover button,div.mce-toolbar-grp .mce-btn.mce-active:hover i,div.mce-toolbar-grp .mce-btn.mce-active button,div.mce-toolbar-grp .mce-btn.mce-active i,div.mce-toolbar-grp .mce-btn:hover button,div.mce-toolbar-grp .mce-btn:hover i{color:#191e23}div.mce-inline-toolbar-grp .mce-btn i,div.mce-toolbar-grp .mce-btn i{font-style:normal}div.mce-toolbar-grp .mce-btn i.mce-ico{font-size:20px}div.mce-widget.mce-tooltip .mce-tooltip-inner{font-size:13px;opacity:1}.mce-inline-toolbar-grp.mce-panel .mce-toolbar .mce-btn{margin:1px}.mce-inline-toolbar-grp.mce-panel .mce-toolbar .mce-btn button{padding:3px}.wp-block-freeform.block-library-rich-text__tinymce table{width:100%} \ No newline at end of file diff --git a/wp-content/plugins/tinymce-advanced/mce/advlist/plugin.js b/wp-content/plugins/tinymce-advanced/mce/advlist/plugin.js new file mode 100644 index 0000000..6dc32b6 --- /dev/null +++ b/wp-content/plugins/tinymce-advanced/mce/advlist/plugin.js @@ -0,0 +1,160 @@ +(function () { +var advlist = (function () { + 'use strict'; + + var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); + + var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools'); + + var applyListFormat = function (editor, listName, styleValue) { + var cmd = listName === 'UL' ? 'InsertUnorderedList' : 'InsertOrderedList'; + editor.execCommand(cmd, false, styleValue === false ? null : { 'list-style-type': styleValue }); + }; + var Actions = { applyListFormat: applyListFormat }; + + var register = function (editor) { + editor.addCommand('ApplyUnorderedListStyle', function (ui, value) { + Actions.applyListFormat(editor, 'UL', value['list-style-type']); + }); + editor.addCommand('ApplyOrderedListStyle', function (ui, value) { + Actions.applyListFormat(editor, 'OL', value['list-style-type']); + }); + }; + var Commands = { register: register }; + + var getNumberStyles = function (editor) { + var styles = editor.getParam('advlist_number_styles', 'default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman'); + return styles ? styles.split(/[ ,]/) : []; + }; + var getBulletStyles = function (editor) { + var styles = editor.getParam('advlist_bullet_styles', 'default,circle,disc,square'); + return styles ? styles.split(/[ ,]/) : []; + }; + var Settings = { + getNumberStyles: getNumberStyles, + getBulletStyles: getBulletStyles + }; + + var isChildOfBody = function (editor, elm) { + return editor.$.contains(editor.getBody(), elm); + }; + var isTableCellNode = function (node) { + return node && /^(TH|TD)$/.test(node.nodeName); + }; + var isListNode = function (editor) { + return function (node) { + return node && /^(OL|UL|DL)$/.test(node.nodeName) && isChildOfBody(editor, node); + }; + }; + var getSelectedStyleType = function (editor) { + var listElm = editor.dom.getParent(editor.selection.getNode(), 'ol,ul'); + return editor.dom.getStyle(listElm, 'listStyleType') || ''; + }; + var ListUtils = { + isTableCellNode: isTableCellNode, + isListNode: isListNode, + getSelectedStyleType: getSelectedStyleType + }; + + var styleValueToText = function (styleValue) { + return styleValue.replace(/\-/g, ' ').replace(/\b\w/g, function (chr) { + return chr.toUpperCase(); + }); + }; + var toMenuItems = function (styles) { + return global$1.map(styles, function (styleValue) { + var text = styleValueToText(styleValue); + var data = styleValue === 'default' ? '' : styleValue; + return { + text: text, + data: data + }; + }); + }; + var ListStyles = { toMenuItems: toMenuItems }; + + var findIndex = function (list, predicate) { + for (var index = 0; index < list.length; index++) { + var element = list[index]; + if (predicate(element)) { + return index; + } + } + return -1; + }; + var listState = function (editor, listName) { + return function (e) { + var ctrl = e.control; + editor.on('NodeChange', function (e) { + var tableCellIndex = findIndex(e.parents, ListUtils.isTableCellNode); + var parents = tableCellIndex !== -1 ? e.parents.slice(0, tableCellIndex) : e.parents; + var lists = global$1.grep(parents, ListUtils.isListNode(editor)); + ctrl.active(lists.length > 0 && lists[0].nodeName === listName); + }); + }; + }; + var updateSelection = function (editor) { + return function (e) { + var listStyleType = ListUtils.getSelectedStyleType(editor); + e.control.items().each(function (ctrl) { + ctrl.active(ctrl.settings.data === listStyleType); + }); + }; + }; + var addSplitButton = function (editor, id, tooltip, cmd, nodeName, styles) { + editor.addButton(id, { + active: false, + type: 'splitbutton', + tooltip: tooltip, + menu: ListStyles.toMenuItems(styles), + onPostRender: listState(editor, nodeName), + onshow: updateSelection(editor), + onselect: function (e) { + Actions.applyListFormat(editor, nodeName, e.control.settings.data); + }, + onclick: function () { + editor.execCommand(cmd); + } + }); + }; + var addButton = function (editor, id, tooltip, cmd, nodeName, styles) { + editor.addButton(id, { + active: false, + type: 'button', + tooltip: tooltip, + onPostRender: listState(editor, nodeName), + onclick: function () { + editor.execCommand(cmd); + } + }); + }; + var addControl = function (editor, id, tooltip, cmd, nodeName, styles) { + if (styles.length > 0) { + addSplitButton(editor, id, tooltip, cmd, nodeName, styles); + } else { + addButton(editor, id, tooltip, cmd, nodeName); + } + }; + var register$1 = function (editor) { + addControl(editor, 'numlist', 'Numbered list', 'InsertOrderedList', 'OL', Settings.getNumberStyles(editor)); + addControl(editor, 'bullist', 'Bullet list', 'InsertUnorderedList', 'UL', Settings.getBulletStyles(editor)); + }; + var Buttons = { register: register$1 }; + + global.add('advlist', function (editor) { + var hasPlugin = function (editor, plugin) { + var plugins = editor.settings.plugins ? editor.settings.plugins : ''; + return global$1.inArray(plugins.split(/[ ,]/), plugin) !== -1; + }; + if (hasPlugin(editor, 'lists')) { + Buttons.register(editor); + Commands.register(editor); + } + }); + function Plugin () { + } + + return Plugin; + +}()); +})(); diff --git a/wp-content/plugins/tinymce-advanced/mce/advlist/plugin.min.js b/wp-content/plugins/tinymce-advanced/mce/advlist/plugin.min.js new file mode 100644 index 0000000..122cd8f --- /dev/null +++ b/wp-content/plugins/tinymce-advanced/mce/advlist/plugin.min.js @@ -0,0 +1 @@ +!function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=tinymce.util.Tools.resolve("tinymce.util.Tools"),s=function(t,e,n){var r="UL"===e?"InsertUnorderedList":"InsertOrderedList";t.execCommand(r,!1,!1===n?null:{"list-style-type":n})},o=function(n){n.addCommand("ApplyUnorderedListStyle",function(t,e){s(n,"UL",e["list-style-type"])}),n.addCommand("ApplyOrderedListStyle",function(t,e){s(n,"OL",e["list-style-type"])})},e=function(t){var e=t.getParam("advlist_number_styles","default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman");return e?e.split(/[ ,]/):[]},n=function(t){var e=t.getParam("advlist_bullet_styles","default,circle,disc,square");return e?e.split(/[ ,]/):[]},u=function(t){return t&&/^(TH|TD)$/.test(t.nodeName)},c=function(r){return function(t){return t&&/^(OL|UL|DL)$/.test(t.nodeName)&&(n=t,(e=r).$.contains(e.getBody(),n));var e,n}},d=function(t){var e=t.dom.getParent(t.selection.getNode(),"ol,ul");return t.dom.getStyle(e,"listStyleType")||""},p=function(t){return a.map(t,function(t){return{text:t.replace(/\-/g," ").replace(/\b\w/g,function(t){return t.toUpperCase()}),data:"default"===t?"":t}})},f=function(i,l){return function(t){var o=t.control;i.on("NodeChange",function(t){var e=function(t,e){for(var n=0;n' + icon + ''; + }); + + emoticonsHtml += ''; + }); + + emoticonsHtml += ''; + + return emoticonsHtml; + } + + editor.addButton('emoticons', { + type: 'panelbutton', + panel: { + role: 'application', + autohide: true, + html: getHtml, + onclick: function(e) { + var linkElm = editor.dom.getParent( e.target, 'a' ); + + if ( linkElm ) { + editor.insertContent( + ' ' + linkElm.getAttribute('data-mce-alt') + ' ' + ); + + this.hide(); + } + } + }, + tooltip: 'Emoticons' + }); +}); diff --git a/wp-content/plugins/tinymce-advanced/mce/emoticons/plugin.min.js b/wp-content/plugins/tinymce-advanced/mce/emoticons/plugin.min.js new file mode 100644 index 0000000..91f26d5 --- /dev/null +++ b/wp-content/plugins/tinymce-advanced/mce/emoticons/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("emoticons",function(a,b){function c(){var a;return a='',tinymce.each(d,function(c){a+="",tinymce.each(c,function(c,d){var e=b+"/img/icon_"+d+".gif";a+=''}),a+=""}),a+="
'+c+'
"}var d=[{smile:":-)",razz:":-P",cool:"8-)",wink:";-)",biggrin:":-D"},{twisted:":twisted:",mrgreen:":mrgreen:",lol:":lol:",rolleyes:":roll:",confused:":-?"},{cry:":cry:",surprised:":-o",evil:":evil:",neutral:":-|",redface:":oops:"},{mad:":-x",eek:"8-O",sad:":-(",arrow:":arrow:",idea:":idea:"}];a.addButton("emoticons",{type:"panelbutton",panel:{role:"application",autohide:!0,html:c,onclick:function(b){var c=a.dom.getParent(b.target,"a");c&&(a.insertContent(" "+c.getAttribute("data-mce-alt")+" "),this.hide())}},tooltip:"Emoticons"})}); \ No newline at end of file diff --git a/wp-content/plugins/tinymce-advanced/mce/importcss/plugin.js b/wp-content/plugins/tinymce-advanced/mce/importcss/plugin.js new file mode 100644 index 0000000..8c21f32 --- /dev/null +++ b/wp-content/plugins/tinymce-advanced/mce/importcss/plugin.js @@ -0,0 +1,264 @@ +(function () { +var importcss = (function () { + 'use strict'; + + var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); + + var global$1 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils'); + + var global$2 = tinymce.util.Tools.resolve('tinymce.EditorManager'); + + var global$3 = tinymce.util.Tools.resolve('tinymce.Env'); + + var global$4 = tinymce.util.Tools.resolve('tinymce.util.Tools'); + + var shouldMergeClasses = function (editor) { + return editor.getParam('importcss_merge_classes'); + }; + var shouldImportExclusive = function (editor) { + return editor.getParam('importcss_exclusive'); + }; + var getSelectorConverter = function (editor) { + return editor.getParam('importcss_selector_converter'); + }; + var getSelectorFilter = function (editor) { + return editor.getParam('importcss_selector_filter'); + }; + var getCssGroups = function (editor) { + return editor.getParam('importcss_groups'); + }; + var shouldAppend = function (editor) { + return editor.getParam('importcss_append'); + }; + var getFileFilter = function (editor) { + return editor.getParam('importcss_file_filter'); + }; + var Settings = { + shouldMergeClasses: shouldMergeClasses, + shouldImportExclusive: shouldImportExclusive, + getSelectorConverter: getSelectorConverter, + getSelectorFilter: getSelectorFilter, + getCssGroups: getCssGroups, + shouldAppend: shouldAppend, + getFileFilter: getFileFilter + }; + + var removeCacheSuffix = function (url) { + var cacheSuffix = global$3.cacheSuffix; + if (typeof url === 'string') { + url = url.replace('?' + cacheSuffix, '').replace('&' + cacheSuffix, ''); + } + return url; + }; + var isSkinContentCss = function (editor, href) { + var settings = editor.settings, skin = settings.skin !== false ? settings.skin || 'lightgray' : false; + if (skin) { + var skinUrl = settings.skin_url ? editor.documentBaseURI.toAbsolute(settings.skin_url) : global$2.baseURL + '/skins/' + skin; + return href === skinUrl + '/content' + (editor.inline ? '.inline' : '') + '.min.css'; + } + return false; + }; + var compileFilter = function (filter) { + if (typeof filter === 'string') { + return function (value) { + return value.indexOf(filter) !== -1; + }; + } else if (filter instanceof RegExp) { + return function (value) { + return filter.test(value); + }; + } + return filter; + }; + var getSelectors = function (editor, doc, fileFilter) { + var selectors = [], contentCSSUrls = {}; + function append(styleSheet, imported) { + var href = styleSheet.href, rules; + href = removeCacheSuffix(href); + if (!href || !fileFilter(href, imported) || isSkinContentCss(editor, href)) { + return; + } + global$4.each(styleSheet.imports, function (styleSheet) { + append(styleSheet, true); + }); + try { + rules = styleSheet.cssRules || styleSheet.rules; + } catch (e) { + } + global$4.each(rules, function (cssRule) { + if (cssRule.styleSheet) { + append(cssRule.styleSheet, true); + } else if (cssRule.selectorText) { + global$4.each(cssRule.selectorText.split(','), function (selector) { + selectors.push(global$4.trim(selector)); + }); + } + }); + } + global$4.each(editor.contentCSS, function (url) { + contentCSSUrls[url] = true; + }); + if (!fileFilter) { + fileFilter = function (href, imported) { + return imported || contentCSSUrls[href]; + }; + } + try { + global$4.each(doc.styleSheets, function (styleSheet) { + append(styleSheet); + }); + } catch (e) { + } + return selectors; + }; + var defaultConvertSelectorToFormat = function (editor, selectorText) { + var format; + var selector = /^(?:([a-z0-9\-_]+))?(\.[a-z0-9_\-\.]+)$/i.exec(selectorText); + if (!selector) { + return; + } + var elementName = selector[1]; + var classes = selector[2].substr(1).split('.').join(' '); + var inlineSelectorElements = global$4.makeMap('a,img'); + if (selector[1]) { + format = { title: selectorText }; + if (editor.schema.getTextBlockElements()[elementName]) { + format.block = elementName; + } else if (editor.schema.getBlockElements()[elementName] || inlineSelectorElements[elementName.toLowerCase()]) { + format.selector = elementName; + } else { + format.inline = elementName; + } + } else if (selector[2]) { + format = { + inline: 'span', + title: selectorText.substr(1), + classes: classes + }; + } + if (Settings.shouldMergeClasses(editor) !== false) { + format.classes = classes; + } else { + format.attributes = { class: classes }; + } + return format; + }; + var getGroupsBySelector = function (groups, selector) { + return global$4.grep(groups, function (group) { + return !group.filter || group.filter(selector); + }); + }; + var compileUserDefinedGroups = function (groups) { + return global$4.map(groups, function (group) { + return global$4.extend({}, group, { + original: group, + selectors: {}, + filter: compileFilter(group.filter), + item: { + text: group.title, + menu: [] + } + }); + }); + }; + var isExclusiveMode = function (editor, group) { + return group === null || Settings.shouldImportExclusive(editor) !== false; + }; + var isUniqueSelector = function (editor, selector, group, globallyUniqueSelectors) { + return !(isExclusiveMode(editor, group) ? selector in globallyUniqueSelectors : selector in group.selectors); + }; + var markUniqueSelector = function (editor, selector, group, globallyUniqueSelectors) { + if (isExclusiveMode(editor, group)) { + globallyUniqueSelectors[selector] = true; + } else { + group.selectors[selector] = true; + } + }; + var convertSelectorToFormat = function (editor, plugin, selector, group) { + var selectorConverter; + if (group && group.selector_converter) { + selectorConverter = group.selector_converter; + } else if (Settings.getSelectorConverter(editor)) { + selectorConverter = Settings.getSelectorConverter(editor); + } else { + selectorConverter = function () { + return defaultConvertSelectorToFormat(editor, selector); + }; + } + return selectorConverter.call(plugin, selector, group); + }; + var setup = function (editor) { + editor.on('renderFormatsMenu', function (e) { + var globallyUniqueSelectors = {}; + var selectorFilter = compileFilter(Settings.getSelectorFilter(editor)), ctrl = e.control; + var groups = compileUserDefinedGroups(Settings.getCssGroups(editor)); + var processSelector = function (selector, group) { + if (isUniqueSelector(editor, selector, group, globallyUniqueSelectors)) { + markUniqueSelector(editor, selector, group, globallyUniqueSelectors); + var format = convertSelectorToFormat(editor, editor.plugins.importcss, selector, group); + if (format) { + var formatName = format.name || global$1.DOM.uniqueId(); + editor.formatter.register(formatName, format); + return global$4.extend({}, ctrl.settings.itemDefaults, { + text: format.title, + format: formatName + }); + } + } + return null; + }; + if (!Settings.shouldAppend(editor)) { + ctrl.items().remove(); + } + global$4.each(getSelectors(editor, e.doc || editor.getDoc(), compileFilter(Settings.getFileFilter(editor))), function (selector) { + if (selector.indexOf('.mce-') === -1) { + if (!selectorFilter || selectorFilter(selector)) { + var selectorGroups = getGroupsBySelector(groups, selector); + if (selectorGroups.length > 0) { + global$4.each(selectorGroups, function (group) { + var menuItem = processSelector(selector, group); + if (menuItem) { + group.item.menu.push(menuItem); + } + }); + } else { + var menuItem = processSelector(selector, null); + if (menuItem) { + ctrl.add(menuItem); + } + } + } + } + }); + global$4.each(groups, function (group) { + if (group.item.menu.length > 0) { + ctrl.add(group.item); + } + }); + e.control.renderNew(); + }); + }; + var ImportCss = { + defaultConvertSelectorToFormat: defaultConvertSelectorToFormat, + setup: setup + }; + + var get = function (editor) { + var convertSelectorToFormat = function (selectorText) { + return ImportCss.defaultConvertSelectorToFormat(editor, selectorText); + }; + return { convertSelectorToFormat: convertSelectorToFormat }; + }; + var Api = { get: get }; + + global.add('importcss', function (editor) { + ImportCss.setup(editor); + return Api.get(editor); + }); + function Plugin () { + } + + return Plugin; + +}()); +})(); diff --git a/wp-content/plugins/tinymce-advanced/mce/importcss/plugin.min.js b/wp-content/plugins/tinymce-advanced/mce/importcss/plugin.min.js new file mode 100644 index 0000000..8585a1e --- /dev/null +++ b/wp-content/plugins/tinymce-advanced/mce/importcss/plugin.min.js @@ -0,0 +1 @@ +!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),d=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),v=tinymce.util.Tools.resolve("tinymce.EditorManager"),h=tinymce.util.Tools.resolve("tinymce.Env"),y=tinymce.util.Tools.resolve("tinymce.util.Tools"),o=function(e){return e.getParam("importcss_merge_classes")},n=function(e){return e.getParam("importcss_exclusive")},_=function(e){return e.getParam("importcss_selector_converter")},r=function(e){return e.getParam("importcss_selector_filter")},i=function(e){return e.getParam("importcss_groups")},u=function(e){return e.getParam("importcss_append")},l=function(e){return e.getParam("importcss_file_filter")},a=function(t){return"string"==typeof t?function(e){return-1!==e.indexOf(t)}:t instanceof RegExp?function(e){return t.test(e)}:t},f=function(f,e,m){var g=[],n={};function p(e,t){var n,r,i,c=e.href;if(r=c,i=h.cacheSuffix,"string"==typeof r&&(r=r.replace("?"+i,"").replace("&"+i,"")),(c=r)&&m(c,t)&&(o=c,u=(s=f).settings,!(l=!1!==u.skin&&(u.skin||"lightgray"))||o!==(u.skin_url?s.documentBaseURI.toAbsolute(u.skin_url):v.baseURL+"/skins/"+l)+"/content"+(s.inline?".inline":"")+".min.css")){var s,o,u,l;y.each(e.imports,function(e){p(e,!0)});try{n=e.cssRules||e.rules}catch(a){}y.each(n,function(e){e.styleSheet?p(e.styleSheet,!0):e.selectorText&&y.each(e.selectorText.split(","),function(e){g.push(y.trim(e))})})}}y.each(f.contentCSS,function(e){n[e]=!0}),m||(m=function(e,t){return t||n[e]});try{y.each(e.styleSheets,function(e){p(e)})}catch(t){}return g},x=function(e,t){var n,r=/^(?:([a-z0-9\-_]+))?(\.[a-z0-9_\-\.]+)$/i.exec(t);if(r){var i=r[1],c=r[2].substr(1).split(".").join(" "),s=y.makeMap("a,img");return r[1]?(n={title:t},e.schema.getTextBlockElements()[i]?n.block=i:e.schema.getBlockElements()[i]||s[i.toLowerCase()]?n.selector=i:n.inline=i):r[2]&&(n={inline:"span",title:t.substr(1),classes:c}),!1!==o(e)?n.classes=c:n.attributes={"class":c},n}},T=function(e,t){return null===t||!1!==n(e)},c=x,t=function(h){h.on("renderFormatsMenu",function(e){var t,p={},c=a(r(h)),v=e.control,s=(t=i(h),y.map(t,function(e){return y.extend({},e,{original:e,selectors:{},filter:a(e.filter),item:{text:e.title,menu:[]}})})),o=function(e,t){if(f=e,g=p,!(T(h,m=t)?f in g:f in m.selectors)){u=e,a=p,T(h,l=t)?a[u]=!0:l.selectors[u]=!0;var n=(c=(i=h).plugins.importcss,s=e,((o=t)&&o.selector_converter?o.selector_converter:_(i)?_(i):function(){return x(i,s)}).call(c,s,o));if(n){var r=n.name||d.DOM.uniqueId();return h.formatter.register(r,n),y.extend({},v.settings.itemDefaults,{text:n.title,format:r})}}var i,c,s,o,u,l,a,f,m,g;return null};u(h)||v.items().remove(),y.each(f(h,e.doc||h.getDoc(),a(l(h))),function(n){if(-1===n.indexOf(".mce-")&&(!c||c(n))){var e=(r=s,i=n,y.grep(r,function(e){return!e.filter||e.filter(i)}));if(0 0 ? formats[0] : getTimeFormat(editor); + }; + var shouldInsertTimeElement = function (editor) { + return editor.getParam('insertdatetime_element', false); + }; + var Settings = { + getDateFormat: getDateFormat, + getTimeFormat: getTimeFormat, + getFormats: getFormats, + getDefaultDateTime: getDefaultDateTime, + shouldInsertTimeElement: shouldInsertTimeElement + }; + + var daysShort = 'Sun Mon Tue Wed Thu Fri Sat Sun'.split(' '); + var daysLong = 'Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday'.split(' '); + var monthsShort = 'Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec'.split(' '); + var monthsLong = 'January February March April May June July August September October November December'.split(' '); + var addZeros = function (value, len) { + value = '' + value; + if (value.length < len) { + for (var i = 0; i < len - value.length; i++) { + value = '0' + value; + } + } + return value; + }; + var getDateTime = function (editor, fmt, date) { + date = date || new Date(); + fmt = fmt.replace('%D', '%m/%d/%Y'); + fmt = fmt.replace('%r', '%I:%M:%S %p'); + fmt = fmt.replace('%Y', '' + date.getFullYear()); + fmt = fmt.replace('%y', '' + date.getYear()); + fmt = fmt.replace('%m', addZeros(date.getMonth() + 1, 2)); + fmt = fmt.replace('%d', addZeros(date.getDate(), 2)); + fmt = fmt.replace('%H', '' + addZeros(date.getHours(), 2)); + fmt = fmt.replace('%M', '' + addZeros(date.getMinutes(), 2)); + fmt = fmt.replace('%S', '' + addZeros(date.getSeconds(), 2)); + fmt = fmt.replace('%I', '' + ((date.getHours() + 11) % 12 + 1)); + fmt = fmt.replace('%p', '' + (date.getHours() < 12 ? 'AM' : 'PM')); + fmt = fmt.replace('%B', '' + editor.translate(monthsLong[date.getMonth()])); + fmt = fmt.replace('%b', '' + editor.translate(monthsShort[date.getMonth()])); + fmt = fmt.replace('%A', '' + editor.translate(daysLong[date.getDay()])); + fmt = fmt.replace('%a', '' + editor.translate(daysShort[date.getDay()])); + fmt = fmt.replace('%%', '%'); + return fmt; + }; + var updateElement = function (editor, timeElm, computerTime, userTime) { + var newTimeElm = editor.dom.create('time', { datetime: computerTime }, userTime); + timeElm.parentNode.insertBefore(newTimeElm, timeElm); + editor.dom.remove(timeElm); + editor.selection.select(newTimeElm, true); + editor.selection.collapse(false); + }; + var insertDateTime = function (editor, format) { + if (Settings.shouldInsertTimeElement(editor)) { + var userTime = getDateTime(editor, format); + var computerTime = void 0; + if (/%[HMSIp]/.test(format)) { + computerTime = getDateTime(editor, '%Y-%m-%dT%H:%M'); + } else { + computerTime = getDateTime(editor, '%Y-%m-%d'); + } + var timeElm = editor.dom.getParent(editor.selection.getStart(), 'time'); + if (timeElm) { + updateElement(editor, timeElm, computerTime, userTime); + } else { + editor.insertContent(''); + } + } else { + editor.insertContent(getDateTime(editor, format)); + } + }; + var Actions = { + insertDateTime: insertDateTime, + getDateTime: getDateTime + }; + + var register = function (editor) { + editor.addCommand('mceInsertDate', function () { + Actions.insertDateTime(editor, Settings.getDateFormat(editor)); + }); + editor.addCommand('mceInsertTime', function () { + Actions.insertDateTime(editor, Settings.getTimeFormat(editor)); + }); + }; + var Commands = { register: register }; + + var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools'); + + var createMenuItems = function (editor, lastFormatState) { + var formats = Settings.getFormats(editor); + return global$1.map(formats, function (fmt) { + return { + text: Actions.getDateTime(editor, fmt), + onclick: function () { + lastFormatState.set(fmt); + Actions.insertDateTime(editor, fmt); + } + }; + }); + }; + var register$1 = function (editor, lastFormatState) { + var menuItems = createMenuItems(editor, lastFormatState); + editor.addButton('insertdatetime', { + type: 'splitbutton', + title: 'Insert date/time', + menu: menuItems, + onclick: function () { + var lastFormat = lastFormatState.get(); + Actions.insertDateTime(editor, lastFormat ? lastFormat : Settings.getDefaultDateTime(editor)); + } + }); + editor.addMenuItem('insertdatetime', { + icon: 'date', + text: 'Date/time', + menu: menuItems, + context: 'insert' + }); + }; + var Buttons = { register: register$1 }; + + global.add('insertdatetime', function (editor) { + var lastFormatState = Cell(null); + Commands.register(editor); + Buttons.register(editor, lastFormatState); + }); + function Plugin () { + } + + return Plugin; + +}()); +})(); diff --git a/wp-content/plugins/tinymce-advanced/mce/insertdatetime/plugin.min.js b/wp-content/plugins/tinymce-advanced/mce/insertdatetime/plugin.min.js new file mode 100644 index 0000000..b200240 --- /dev/null +++ b/wp-content/plugins/tinymce-advanced/mce/insertdatetime/plugin.min.js @@ -0,0 +1 @@ +!function(){"use strict";var r=function(e){var t=e,n=function(){return t};return{get:n,set:function(e){t=e},clone:function(){return r(n())}}},e=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=function(e){return e.getParam("insertdatetime_timeformat",e.translate("%H:%M:%S"))},a=function(e){return e.getParam("insertdatetime_formats",["%H:%M:%S","%Y-%m-%d","%I:%M:%S %p","%D"])},t=function(e){return e.getParam("insertdatetime_dateformat",e.translate("%Y-%m-%d"))},i=n,o=a,u=function(e){var t=a(e);return 0'+n+"")}else e.insertContent(f(e,t));var i,o,u,c,l},y=f,M=function(e){e.addCommand("mceInsertDate",function(){g(e,t(e))}),e.addCommand("mceInsertTime",function(){g(e,i(e))})},v=tinymce.util.Tools.resolve("tinymce.util.Tools"),S=function(t,n){var r,a,e,i=(a=n,e=o(r=t),v.map(e,function(e){return{text:y(r,e),onclick:function(){a.set(e),g(r,e)}}}));t.addButton("insertdatetime",{type:"splitbutton",title:"Insert date/time",menu:i,onclick:function(){var e=n.get();g(t,e||u(t))}}),t.addMenuItem("insertdatetime",{icon:"date",text:"Date/time",menu:i,context:"insert"})};e.add("insertdatetime",function(e){var t=r(null);M(e),S(e,t)})}(); \ No newline at end of file diff --git a/wp-content/plugins/tinymce-advanced/mce/link/plugin.js b/wp-content/plugins/tinymce-advanced/mce/link/plugin.js new file mode 100644 index 0000000..47d61c2 --- /dev/null +++ b/wp-content/plugins/tinymce-advanced/mce/link/plugin.js @@ -0,0 +1,713 @@ +(function () { +var link = (function (domGlobals) { + 'use strict'; + + var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); + + var global$1 = tinymce.util.Tools.resolve('tinymce.util.VK'); + + var assumeExternalTargets = function (editorSettings) { + return typeof editorSettings.link_assume_external_targets === 'boolean' ? editorSettings.link_assume_external_targets : false; + }; + var hasContextToolbar = function (editorSettings) { + return typeof editorSettings.link_context_toolbar === 'boolean' ? editorSettings.link_context_toolbar : false; + }; + var getLinkList = function (editorSettings) { + return editorSettings.link_list; + }; + var hasDefaultLinkTarget = function (editorSettings) { + return typeof editorSettings.default_link_target === 'string'; + }; + var getDefaultLinkTarget = function (editorSettings) { + return editorSettings.default_link_target; + }; + var getTargetList = function (editorSettings) { + return editorSettings.target_list; + }; + var setTargetList = function (editor, list) { + editor.settings.target_list = list; + }; + var shouldShowTargetList = function (editorSettings) { + return getTargetList(editorSettings) !== false; + }; + var getRelList = function (editorSettings) { + return editorSettings.rel_list; + }; + var hasRelList = function (editorSettings) { + return getRelList(editorSettings) !== undefined; + }; + var getLinkClassList = function (editorSettings) { + return editorSettings.link_class_list; + }; + var hasLinkClassList = function (editorSettings) { + return getLinkClassList(editorSettings) !== undefined; + }; + var shouldShowLinkTitle = function (editorSettings) { + return editorSettings.link_title !== false; + }; + var allowUnsafeLinkTarget = function (editorSettings) { + return typeof editorSettings.allow_unsafe_link_target === 'boolean' ? editorSettings.allow_unsafe_link_target : false; + }; + var Settings = { + assumeExternalTargets: assumeExternalTargets, + hasContextToolbar: hasContextToolbar, + getLinkList: getLinkList, + hasDefaultLinkTarget: hasDefaultLinkTarget, + getDefaultLinkTarget: getDefaultLinkTarget, + getTargetList: getTargetList, + setTargetList: setTargetList, + shouldShowTargetList: shouldShowTargetList, + getRelList: getRelList, + hasRelList: hasRelList, + getLinkClassList: getLinkClassList, + hasLinkClassList: hasLinkClassList, + shouldShowLinkTitle: shouldShowLinkTitle, + allowUnsafeLinkTarget: allowUnsafeLinkTarget + }; + + var global$2 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils'); + + var global$3 = tinymce.util.Tools.resolve('tinymce.Env'); + + var appendClickRemove = function (link, evt) { + domGlobals.document.body.appendChild(link); + link.dispatchEvent(evt); + domGlobals.document.body.removeChild(link); + }; + var open = function (url) { + if (!global$3.ie || global$3.ie > 10) { + var link = domGlobals.document.createElement('a'); + link.target = '_blank'; + link.href = url; + link.rel = 'noreferrer noopener'; + var evt = domGlobals.document.createEvent('MouseEvents'); + evt.initMouseEvent('click', true, true, domGlobals.window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); + appendClickRemove(link, evt); + } else { + var win = domGlobals.window.open('', '_blank'); + if (win) { + win.opener = null; + var doc = win.document; + doc.open(); + doc.write(''); + doc.close(); + } + } + }; + var OpenUrl = { open: open }; + + var global$4 = tinymce.util.Tools.resolve('tinymce.util.Tools'); + + var toggleTargetRules = function (rel, isUnsafe) { + var rules = ['noopener']; + var newRel = rel ? rel.split(/\s+/) : []; + var toString = function (rel) { + return global$4.trim(rel.sort().join(' ')); + }; + var addTargetRules = function (rel) { + rel = removeTargetRules(rel); + return rel.length ? rel.concat(rules) : rules; + }; + var removeTargetRules = function (rel) { + return rel.filter(function (val) { + return global$4.inArray(rules, val) === -1; + }); + }; + newRel = isUnsafe ? addTargetRules(newRel) : removeTargetRules(newRel); + return newRel.length ? toString(newRel) : null; + }; + var trimCaretContainers = function (text) { + return text.replace(/\uFEFF/g, ''); + }; + var getAnchorElement = function (editor, selectedElm) { + selectedElm = selectedElm || editor.selection.getNode(); + if (isImageFigure(selectedElm)) { + return editor.dom.select('a[href]', selectedElm)[0]; + } else { + return editor.dom.getParent(selectedElm, 'a[href]'); + } + }; + var getAnchorText = function (selection, anchorElm) { + var text = anchorElm ? anchorElm.innerText || anchorElm.textContent : selection.getContent({ format: 'text' }); + return trimCaretContainers(text); + }; + var isLink = function (elm) { + return elm && elm.nodeName === 'A' && elm.href; + }; + var hasLinks = function (elements) { + return global$4.grep(elements, isLink).length > 0; + }; + var isOnlyTextSelected = function (html) { + if (/]+>[^<]+<\/a>$/.test(html) || html.indexOf('href=') === -1)) { + return false; + } + return true; + }; + var isImageFigure = function (node) { + return node && node.nodeName === 'FIGURE' && /\bimage\b/i.test(node.className); + }; + var link = function (editor, attachState) { + return function (data) { + editor.undoManager.transact(function () { + var selectedElm = editor.selection.getNode(); + var anchorElm = getAnchorElement(editor, selectedElm); + var linkAttrs = { + href: data.href, + target: data.target ? data.target : null, + rel: data.rel ? data.rel : null, + class: data.class ? data.class : null, + title: data.title ? data.title : null + }; + if (!Settings.hasRelList(editor.settings) && Settings.allowUnsafeLinkTarget(editor.settings) === false) { + linkAttrs.rel = toggleTargetRules(linkAttrs.rel, linkAttrs.target === '_blank'); + } + if (data.href === attachState.href) { + attachState.attach(); + attachState = {}; + } + if (anchorElm) { + editor.focus(); + if (data.hasOwnProperty('text')) { + if ('innerText' in anchorElm) { + anchorElm.innerText = data.text; + } else { + anchorElm.textContent = data.text; + } + } + editor.dom.setAttribs(anchorElm, linkAttrs); + editor.selection.select(anchorElm); + editor.undoManager.add(); + } else { + if (isImageFigure(selectedElm)) { + linkImageFigure(editor, selectedElm, linkAttrs); + } else if (data.hasOwnProperty('text')) { + editor.insertContent(editor.dom.createHTML('a', linkAttrs, editor.dom.encode(data.text))); + } else { + editor.execCommand('mceInsertLink', false, linkAttrs); + } + } + }); + }; + }; + var unlink = function (editor) { + return function () { + editor.undoManager.transact(function () { + var node = editor.selection.getNode(); + if (isImageFigure(node)) { + unlinkImageFigure(editor, node); + } else { + editor.execCommand('unlink'); + } + }); + }; + }; + var unlinkImageFigure = function (editor, fig) { + var a, img; + img = editor.dom.select('img', fig)[0]; + if (img) { + a = editor.dom.getParents(img, 'a[href]', fig)[0]; + if (a) { + a.parentNode.insertBefore(img, a); + editor.dom.remove(a); + } + } + }; + var linkImageFigure = function (editor, fig, attrs) { + var a, img; + img = editor.dom.select('img', fig)[0]; + if (img) { + a = editor.dom.create('a', attrs); + img.parentNode.insertBefore(a, img); + a.appendChild(img); + } + }; + var Utils = { + link: link, + unlink: unlink, + isLink: isLink, + hasLinks: hasLinks, + isOnlyTextSelected: isOnlyTextSelected, + getAnchorElement: getAnchorElement, + getAnchorText: getAnchorText, + toggleTargetRules: toggleTargetRules + }; + + var global$5 = tinymce.util.Tools.resolve('tinymce.util.Delay'); + + var global$6 = tinymce.util.Tools.resolve('tinymce.util.XHR'); + + var attachState = {}; + var createLinkList = function (editor, callback) { + var linkList = Settings.getLinkList(editor.settings); + if (typeof linkList === 'string') { + global$6.send({ + url: linkList, + success: function (text) { + callback(editor, JSON.parse(text)); + } + }); + } else if (typeof linkList === 'function') { + linkList(function (list) { + callback(editor, list); + }); + } else { + callback(editor, linkList); + } + }; + var buildListItems = function (inputList, itemCallback, startItems) { + var appendItems = function (values, output) { + output = output || []; + global$4.each(values, function (item) { + var menuItem = { text: item.text || item.title }; + if (item.menu) { + menuItem.menu = appendItems(item.menu); + } else { + menuItem.value = item.value; + if (itemCallback) { + itemCallback(menuItem); + } + } + output.push(menuItem); + }); + return output; + }; + return appendItems(inputList, startItems || []); + }; + var delayedConfirm = function (editor, message, callback) { + var rng = editor.selection.getRng(); + global$5.setEditorTimeout(editor, function () { + editor.windowManager.confirm(message, function (state) { + editor.selection.setRng(rng); + callback(state); + }); + }); + }; + var showDialog = function (editor, linkList) { + var data = {}; + var selection = editor.selection; + var dom = editor.dom; + var anchorElm, initialText; + var win, onlyText, textListCtrl, linkListCtrl, relListCtrl, targetListCtrl, classListCtrl, linkTitleCtrl, value; + var linkListChangeHandler = function (e) { + var textCtrl = win.find('#text'); + if (!textCtrl.value() || e.lastControl && textCtrl.value() === e.lastControl.text()) { + textCtrl.value(e.control.text()); + } + win.find('#href').value(e.control.value()); + }; + var buildAnchorListControl = function (url) { + var anchorList = []; + global$4.each(editor.dom.select('a:not([href])'), function (anchor) { + var id = anchor.name || anchor.id; + if (id) { + anchorList.push({ + text: id, + value: '#' + id, + selected: url.indexOf('#' + id) !== -1 + }); + } + }); + if (anchorList.length) { + anchorList.unshift({ + text: 'None', + value: '' + }); + return { + name: 'anchor', + type: 'listbox', + label: 'Anchors', + values: anchorList, + onselect: linkListChangeHandler + }; + } + }; + var updateText = function () { + if (!initialText && onlyText && !data.text) { + this.parent().parent().find('#text')[0].value(this.value()); + } + }; + var urlChange = function (e) { + var meta = e.meta || {}; + if (linkListCtrl) { + linkListCtrl.value(editor.convertURL(this.value(), 'href')); + } + global$4.each(e.meta, function (value, key) { + var inp = win.find('#' + key); + if (key === 'text') { + if (initialText.length === 0) { + inp.value(value); + data.text = value; + } + } else { + inp.value(value); + } + }); + if (meta.attach) { + attachState = { + href: this.value(), + attach: meta.attach + }; + } + if (!meta.text) { + updateText.call(this); + } + }; + var onBeforeCall = function (e) { + e.meta = win.toJSON(); + }; + onlyText = Utils.isOnlyTextSelected(selection.getContent()); + anchorElm = Utils.getAnchorElement(editor); + data.text = initialText = Utils.getAnchorText(editor.selection, anchorElm); + data.href = anchorElm ? dom.getAttrib(anchorElm, 'href') : ''; + if (anchorElm) { + data.target = dom.getAttrib(anchorElm, 'target'); + } else if (Settings.hasDefaultLinkTarget(editor.settings)) { + data.target = Settings.getDefaultLinkTarget(editor.settings); + } + if (value = dom.getAttrib(anchorElm, 'rel')) { + data.rel = value; + } + if (value = dom.getAttrib(anchorElm, 'class')) { + data.class = value; + } + if (value = dom.getAttrib(anchorElm, 'title')) { + data.title = value; + } + if (onlyText) { + textListCtrl = { + name: 'text', + type: 'textbox', + size: 40, + label: 'Text to display', + onchange: function () { + data.text = this.value(); + } + }; + } + if (linkList) { + linkListCtrl = { + type: 'listbox', + label: 'Link list', + values: buildListItems(linkList, function (item) { + item.value = editor.convertURL(item.value || item.url, 'href'); + }, [{ + text: 'None', + value: '' + }]), + onselect: linkListChangeHandler, + value: editor.convertURL(data.href, 'href'), + onPostRender: function () { + linkListCtrl = this; + } + }; + } + if (Settings.shouldShowTargetList(editor.settings)) { + if (Settings.getTargetList(editor.settings) === undefined) { + Settings.setTargetList(editor, [ + { + text: 'None', + value: '' + }, + { + text: 'New window', + value: '_blank' + } + ]); + } + targetListCtrl = { + name: 'target', + type: 'listbox', + label: 'Target', + values: buildListItems(Settings.getTargetList(editor.settings)) + }; + } + if (Settings.hasRelList(editor.settings)) { + relListCtrl = { + name: 'rel', + type: 'listbox', + label: 'Rel', + values: buildListItems(Settings.getRelList(editor.settings), function (item) { + if (Settings.allowUnsafeLinkTarget(editor.settings) === false) { + item.value = Utils.toggleTargetRules(item.value, data.target === '_blank'); + } + }) + }; + } + if (Settings.hasLinkClassList(editor.settings)) { + classListCtrl = { + name: 'class', + type: 'listbox', + label: 'Class', + values: buildListItems(Settings.getLinkClassList(editor.settings), function (item) { + if (item.value) { + item.textStyle = function () { + return editor.formatter.getCssText({ + inline: 'a', + classes: [item.value] + }); + }; + } + }) + }; + } + if (Settings.shouldShowLinkTitle(editor.settings)) { + linkTitleCtrl = { + name: 'title', + type: 'textbox', + label: 'Title', + value: data.title + }; + } + win = editor.windowManager.open({ + title: 'Insert link', + data: data, + body: [ + { + name: 'href', + type: 'filepicker', + filetype: 'file', + size: 40, + autofocus: true, + label: 'Url', + onchange: urlChange, + onkeyup: updateText, + onpaste: updateText, + onbeforecall: onBeforeCall + }, + textListCtrl, + linkTitleCtrl, + buildAnchorListControl(data.href), + linkListCtrl, + relListCtrl, + targetListCtrl, + classListCtrl + ], + onSubmit: function (e) { + var assumeExternalTargets = Settings.assumeExternalTargets(editor.settings); + var insertLink = Utils.link(editor, attachState); + var removeLink = Utils.unlink(editor); + var resultData = global$4.extend({}, data, e.data); + var href = resultData.href; + if (!href) { + removeLink(); + return; + } + if (!onlyText || resultData.text === initialText) { + delete resultData.text; + } + if (href.indexOf('@') > 0 && href.indexOf('//') === -1 && href.indexOf('mailto:') === -1) { + delayedConfirm(editor, 'The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?', function (state) { + if (state) { + resultData.href = 'mailto:' + href; + } + insertLink(resultData); + }); + return; + } + if (assumeExternalTargets === true && !/^\w+:/i.test(href) || assumeExternalTargets === false && /^\s*www[\.|\d\.]/i.test(href)) { + delayedConfirm(editor, 'The URL you entered seems to be an external link. Do you want to add the required http:// prefix?', function (state) { + if (state) { + resultData.href = 'http://' + href; + } + insertLink(resultData); + }); + return; + } + insertLink(resultData); + } + }); + }; + var open$1 = function (editor) { + createLinkList(editor, showDialog); + }; + var Dialog = { open: open$1 }; + + var getLink = function (editor, elm) { + return editor.dom.getParent(elm, 'a[href]'); + }; + var getSelectedLink = function (editor) { + return getLink(editor, editor.selection.getStart()); + }; + var getHref = function (elm) { + var href = elm.getAttribute('data-mce-href'); + return href ? href : elm.getAttribute('href'); + }; + var isContextMenuVisible = function (editor) { + var contextmenu = editor.plugins.contextmenu; + return contextmenu ? contextmenu.isContextMenuVisible() : false; + }; + var hasOnlyAltModifier = function (e) { + return e.altKey === true && e.shiftKey === false && e.ctrlKey === false && e.metaKey === false; + }; + var gotoLink = function (editor, a) { + if (a) { + var href = getHref(a); + if (/^#/.test(href)) { + var targetEl = editor.$(href); + if (targetEl.length) { + editor.selection.scrollIntoView(targetEl[0], true); + } + } else { + OpenUrl.open(a.href); + } + } + }; + var openDialog = function (editor) { + return function () { + Dialog.open(editor); + }; + }; + var gotoSelectedLink = function (editor) { + return function () { + gotoLink(editor, getSelectedLink(editor)); + }; + }; + var leftClickedOnAHref = function (editor) { + return function (elm) { + var sel, rng, node; + if (Settings.hasContextToolbar(editor.settings) && !isContextMenuVisible(editor) && Utils.isLink(elm)) { + sel = editor.selection; + rng = sel.getRng(); + node = rng.startContainer; + if (node.nodeType === 3 && sel.isCollapsed() && rng.startOffset > 0 && rng.startOffset < node.data.length) { + return true; + } + } + return false; + }; + }; + var setupGotoLinks = function (editor) { + editor.on('click', function (e) { + var link = getLink(editor, e.target); + if (link && global$1.metaKeyPressed(e)) { + e.preventDefault(); + gotoLink(editor, link); + } + }); + editor.on('keydown', function (e) { + var link = getSelectedLink(editor); + if (link && e.keyCode === 13 && hasOnlyAltModifier(e)) { + e.preventDefault(); + gotoLink(editor, link); + } + }); + }; + var toggleActiveState = function (editor) { + return function () { + var self = this; + editor.on('nodechange', function (e) { + self.active(!editor.readonly && !!Utils.getAnchorElement(editor, e.element)); + }); + }; + }; + var toggleViewLinkState = function (editor) { + return function () { + var self = this; + var toggleVisibility = function (e) { + if (Utils.hasLinks(e.parents)) { + self.show(); + } else { + self.hide(); + } + }; + if (!Utils.hasLinks(editor.dom.getParents(editor.selection.getStart()))) { + self.hide(); + } + editor.on('nodechange', toggleVisibility); + self.on('remove', function () { + editor.off('nodechange', toggleVisibility); + }); + }; + }; + var Actions = { + openDialog: openDialog, + gotoSelectedLink: gotoSelectedLink, + leftClickedOnAHref: leftClickedOnAHref, + setupGotoLinks: setupGotoLinks, + toggleActiveState: toggleActiveState, + toggleViewLinkState: toggleViewLinkState + }; + + var register = function (editor) { + editor.addCommand('mceLink', Actions.openDialog(editor)); + }; + var Commands = { register: register }; + + var setup = function (editor) { + editor.addShortcut('Meta+K', '', Actions.openDialog(editor)); + }; + var Keyboard = { setup: setup }; + + var setupButtons = function (editor) { + editor.addButton('link', { + active: false, + icon: 'link', + tooltip: 'Insert/edit link', + onclick: Actions.openDialog(editor), + onpostrender: Actions.toggleActiveState(editor) + }); + editor.addButton('unlink', { + active: false, + icon: 'unlink', + tooltip: 'Remove link', + onclick: Utils.unlink(editor), + onpostrender: Actions.toggleActiveState(editor) + }); + if (editor.addContextToolbar) { + editor.addButton('openlink', { + icon: 'newtab', + tooltip: 'Open link', + onclick: Actions.gotoSelectedLink(editor) + }); + } + }; + var setupMenuItems = function (editor) { + editor.addMenuItem('openlink', { + text: 'Open link', + icon: 'newtab', + onclick: Actions.gotoSelectedLink(editor), + onPostRender: Actions.toggleViewLinkState(editor), + prependToContext: true + }); + editor.addMenuItem('link', { + icon: 'link', + text: 'Link', + shortcut: 'Meta+K', + onclick: Actions.openDialog(editor), + stateSelector: 'a[href]', + context: 'insert', + prependToContext: true + }); + editor.addMenuItem('unlink', { + icon: 'unlink', + text: 'Remove link', + onclick: Utils.unlink(editor), + stateSelector: 'a[href]' + }); + }; + var setupContextToolbars = function (editor) { + if (editor.addContextToolbar) { + editor.addContextToolbar(Actions.leftClickedOnAHref(editor), 'openlink | link unlink'); + } + }; + var Controls = { + setupButtons: setupButtons, + setupMenuItems: setupMenuItems, + setupContextToolbars: setupContextToolbars + }; + + global.add('link', function (editor) { + Controls.setupButtons(editor); + Controls.setupMenuItems(editor); + Controls.setupContextToolbars(editor); + Actions.setupGotoLinks(editor); + Commands.register(editor); + Keyboard.setup(editor); + }); + function Plugin () { + } + + return Plugin; + +}(window)); +})(); diff --git a/wp-content/plugins/tinymce-advanced/mce/link/plugin.min.js b/wp-content/plugins/tinymce-advanced/mce/link/plugin.min.js new file mode 100644 index 0000000..e07a912 --- /dev/null +++ b/wp-content/plugins/tinymce-advanced/mce/link/plugin.min.js @@ -0,0 +1 @@ +!function(l){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=tinymce.util.Tools.resolve("tinymce.util.VK"),e=function(t){return t.target_list},o=function(t){return t.rel_list},i=function(t){return t.link_class_list},p=function(t){return"boolean"==typeof t.link_assume_external_targets&&t.link_assume_external_targets},a=function(t){return"boolean"==typeof t.link_context_toolbar&&t.link_context_toolbar},r=function(t){return t.link_list},k=function(t){return"string"==typeof t.default_link_target},y=function(t){return t.default_link_target},b=e,_=function(t,e){t.settings.target_list=e},w=function(t){return!1!==e(t)},T=o,C=function(t){return o(t)!==undefined},M=i,O=function(t){return i(t)!==undefined},R=function(t){return!1!==t.link_title},N=function(t){return"boolean"==typeof t.allow_unsafe_link_target&&t.allow_unsafe_link_target},u=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),c=tinymce.util.Tools.resolve("tinymce.Env"),s=function(t){if(!c.ie||10'),i.close()}}var r,a},A=tinymce.util.Tools.resolve("tinymce.util.Tools"),f=function(t,e){var n,o,i=["noopener"],r=t?t.split(/\s+/):[],a=function(t){return t.filter(function(t){return-1===A.inArray(i,t)})};return(r=e?(n=a(n=r)).length?n.concat(i):i:a(r)).length?(o=r,A.trim(o.sort().join(" "))):null},d=function(t,e){return e=e||t.selection.getNode(),v(e)?t.dom.select("a[href]",e)[0]:t.dom.getParent(e,"a[href]")},m=function(t){return t&&"A"===t.nodeName&&t.href},v=function(t){return t&&"FIGURE"===t.nodeName&&/\bimage\b/i.test(t.className)},g=function(t,e){var n,o;(o=t.dom.select("img",e)[0])&&(n=t.dom.getParents(o,"a[href]",e)[0])&&(n.parentNode.insertBefore(o,n),t.dom.remove(n))},h=function(t,e,n){var o,i;(i=t.dom.select("img",e)[0])&&(o=t.dom.create("a",n),i.parentNode.insertBefore(o,i),o.appendChild(i))},L=function(i,r){return function(o){i.undoManager.transact(function(){var t=i.selection.getNode(),e=d(i,t),n={href:o.href,target:o.target?o.target:null,rel:o.rel?o.rel:null,"class":o["class"]?o["class"]:null,title:o.title?o.title:null};C(i.settings)||!1!==N(i.settings)||(n.rel=f(n.rel,"_blank"===n.target)),o.href===r.href&&(r.attach(),r={}),e?(i.focus(),o.hasOwnProperty("text")&&("innerText"in e?e.innerText=o.text:e.textContent=o.text),i.dom.setAttribs(e,n),i.selection.select(e),i.undoManager.add()):v(t)?h(i,t,n):o.hasOwnProperty("text")?i.insertContent(i.dom.createHTML("a",n,i.dom.encode(o.text))):i.execCommand("mceInsertLink",!1,n)})}},P=function(e){return function(){e.undoManager.transact(function(){var t=e.selection.getNode();v(t)?g(e,t):e.execCommand("unlink")})}},x=m,E=function(t){return 0]+>[^<]+<\/a>$/.test(t)||-1===t.indexOf("href=")))},I=d,K=function(t,e){var n=e?e.innerText||e.textContent:t.getContent({format:"text"});return n.replace(/\uFEFF/g,"")},U=f,D=tinymce.util.Tools.resolve("tinymce.util.Delay"),B=tinymce.util.Tools.resolve("tinymce.util.XHR"),F={},q=function(t,o,e){var i=function(t,n){return n=n||[],A.each(t,function(t){var e={text:t.text||t.title};t.menu?e.menu=i(t.menu):(e.value=t.value,o&&o(e)),n.push(e)}),n};return i(t,e||[])},V=function(e,t,n){var o=e.selection.getRng();D.setEditorTimeout(e,function(){e.windowManager.confirm(t,function(t){e.selection.setRng(o),n(t)})})},z=function(a,t){var e,l,o,u,n,i,r,c,s,f,d,m={},v=a.selection,g=a.dom,h=function(t){var e=o.find("#text");(!e.value()||t.lastControl&&e.value()===t.lastControl.text())&&e.value(t.control.text()),o.find("#href").value(t.control.value())},x=function(){l||!u||m.text||this.parent().parent().find("#text")[0].value(this.value())};u=S(v.getContent()),e=I(a),m.text=l=K(a.selection,e),m.href=e?g.getAttrib(e,"href"):"",e?m.target=g.getAttrib(e,"target"):k(a.settings)&&(m.target=y(a.settings)),(d=g.getAttrib(e,"rel"))&&(m.rel=d),(d=g.getAttrib(e,"class"))&&(m["class"]=d),(d=g.getAttrib(e,"title"))&&(m.title=d),u&&(n={name:"text",type:"textbox",size:40,label:"Text to display",onchange:function(){m.text=this.value()}}),t&&(i={type:"listbox",label:"Link list",values:q(t,function(t){t.value=a.convertURL(t.value||t.url,"href")},[{text:"None",value:""}]),onselect:h,value:a.convertURL(m.href,"href"),onPostRender:function(){i=this}}),w(a.settings)&&(b(a.settings)===undefined&&_(a,[{text:"None",value:""},{text:"New window",value:"_blank"}]),c={name:"target",type:"listbox",label:"Target",values:q(b(a.settings))}),C(a.settings)&&(r={name:"rel",type:"listbox",label:"Rel",values:q(T(a.settings),function(t){!1===N(a.settings)&&(t.value=U(t.value,"_blank"===m.target))})}),O(a.settings)&&(s={name:"class",type:"listbox",label:"Class",values:q(M(a.settings),function(t){t.value&&(t.textStyle=function(){return a.formatter.getCssText({inline:"a",classes:[t.value]})})})}),R(a.settings)&&(f={name:"title",type:"textbox",label:"Title",value:m.title}),o=a.windowManager.open({title:"Insert link",data:m,body:[{name:"href",type:"filepicker",filetype:"file",size:40,autofocus:!0,label:"Url",onchange:function(t){var e=t.meta||{};i&&i.value(a.convertURL(this.value(),"href")),A.each(t.meta,function(t,e){var n=o.find("#"+e);"text"===e?0===l.length&&(n.value(t),m.text=t):n.value(t)}),e.attach&&(F={href:this.value(),attach:e.attach}),e.text||x.call(this)},onkeyup:x,onpaste:x,onbeforecall:function(t){t.meta=o.toJSON()}},n,f,function(n){var o=[];if(A.each(a.dom.select("a:not([href])"),function(t){var e=t.name||t.id;e&&o.push({text:e,value:"#"+e,selected:-1!==n.indexOf("#"+e)})}),o.length)return o.unshift({text:"None",value:""}),{name:"anchor",type:"listbox",label:"Anchors",values:o,onselect:h}}(m.href),i,r,c,s],onSubmit:function(t){var e=p(a.settings),n=L(a,F),o=P(a),i=A.extend({},m,t.data),r=i.href;r?(u&&i.text!==l||delete i.text,0 ' : ' '; + editor.insertContent(stringRepeat(nbsp, times)); + editor.dom.setAttrib(editor.dom.select('span.mce-nbsp'), 'data-mce-bogus', '1'); + }; + var Actions = { insertNbsp: insertNbsp }; + + var register = function (editor) { + editor.addCommand('mceNonBreaking', function () { + Actions.insertNbsp(editor, 1); + }); + }; + var Commands = { register: register }; + + var global$1 = tinymce.util.Tools.resolve('tinymce.util.VK'); + + var getKeyboardSpaces = function (editor) { + var spaces = editor.getParam('nonbreaking_force_tab', 0); + if (typeof spaces === 'boolean') { + return spaces === true ? 3 : 0; + } else { + return spaces; + } + }; + var Settings = { getKeyboardSpaces: getKeyboardSpaces }; + + var setup = function (editor) { + var spaces = Settings.getKeyboardSpaces(editor); + if (spaces > 0) { + editor.on('keydown', function (e) { + if (e.keyCode === global$1.TAB && !e.isDefaultPrevented()) { + if (e.shiftKey) { + return; + } + e.preventDefault(); + e.stopImmediatePropagation(); + Actions.insertNbsp(editor, spaces); + } + }); + } + }; + var Keyboard = { setup: setup }; + + var register$1 = function (editor) { + editor.addButton('nonbreaking', { + title: 'Nonbreaking space', + cmd: 'mceNonBreaking' + }); + editor.addMenuItem('nonbreaking', { + icon: 'nonbreaking', + text: 'Nonbreaking space', + cmd: 'mceNonBreaking', + context: 'insert' + }); + }; + var Buttons = { register: register$1 }; + + global.add('nonbreaking', function (editor) { + Commands.register(editor); + Buttons.register(editor); + Keyboard.setup(editor); + }); + function Plugin () { + } + + return Plugin; + +}()); +})(); diff --git a/wp-content/plugins/tinymce-advanced/mce/nonbreaking/plugin.min.js b/wp-content/plugins/tinymce-advanced/mce/nonbreaking/plugin.min.js new file mode 100644 index 0000000..084d9b2 --- /dev/null +++ b/wp-content/plugins/tinymce-advanced/mce/nonbreaking/plugin.min.js @@ -0,0 +1 @@ +!function(){"use strict";var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=function(n,e){var t,i=(t=n).plugins.visualchars&&t.plugins.visualchars.isEnabled()?' ':" ";n.insertContent(function(n,e){for(var t="",i=0;i 0) { + var cg = m[captureGroup]; + if (!cg) { + throw new Error('Invalid capture group'); + } + index += m[0].indexOf(cg); + m[0] = cg; + } + return [ + index, + index + m[0].length, + [m[0]] + ]; + } + function getText(node) { + var txt; + if (node.nodeType === 3) { + return node.data; + } + if (hiddenTextElementsMap[node.nodeName] && !blockElementsMap[node.nodeName]) { + return ''; + } + txt = ''; + if (isContentEditableFalse(node)) { + return '\n'; + } + if (blockElementsMap[node.nodeName] || shortEndedElementsMap[node.nodeName]) { + txt += '\n'; + } + if (node = node.firstChild) { + do { + txt += getText(node); + } while (node = node.nextSibling); + } + return txt; + } + function stepThroughMatches(node, matches, replaceFn) { + var startNode, endNode, startNodeIndex, endNodeIndex, innerNodes = [], atIndex = 0, curNode = node, matchLocation = matches.shift(), matchIndex = 0; + out: + while (true) { + if (blockElementsMap[curNode.nodeName] || shortEndedElementsMap[curNode.nodeName] || isContentEditableFalse(curNode)) { + atIndex++; + } + if (curNode.nodeType === 3) { + if (!endNode && curNode.length + atIndex >= matchLocation[1]) { + endNode = curNode; + endNodeIndex = matchLocation[1] - atIndex; + } else if (startNode) { + innerNodes.push(curNode); + } + if (!startNode && curNode.length + atIndex > matchLocation[0]) { + startNode = curNode; + startNodeIndex = matchLocation[0] - atIndex; + } + atIndex += curNode.length; + } + if (startNode && endNode) { + curNode = replaceFn({ + startNode: startNode, + startNodeIndex: startNodeIndex, + endNode: endNode, + endNodeIndex: endNodeIndex, + innerNodes: innerNodes, + match: matchLocation[2], + matchIndex: matchIndex + }); + atIndex -= endNode.length - endNodeIndex; + startNode = null; + endNode = null; + innerNodes = []; + matchLocation = matches.shift(); + matchIndex++; + if (!matchLocation) { + break; + } + } else if ((!hiddenTextElementsMap[curNode.nodeName] || blockElementsMap[curNode.nodeName]) && curNode.firstChild) { + if (!isContentEditableFalse(curNode)) { + curNode = curNode.firstChild; + continue; + } + } else if (curNode.nextSibling) { + curNode = curNode.nextSibling; + continue; + } + while (true) { + if (curNode.nextSibling) { + curNode = curNode.nextSibling; + break; + } else if (curNode.parentNode !== node) { + curNode = curNode.parentNode; + } else { + break out; + } + } + } + } + function genReplacer(nodeName) { + var makeReplacementNode; + if (typeof nodeName !== 'function') { + var stencilNode_1 = nodeName.nodeType ? nodeName : doc.createElement(nodeName); + makeReplacementNode = function (fill, matchIndex) { + var clone = stencilNode_1.cloneNode(false); + clone.setAttribute('data-mce-index', matchIndex); + if (fill) { + clone.appendChild(doc.createTextNode(fill)); + } + return clone; + }; + } else { + makeReplacementNode = nodeName; + } + return function (range) { + var before; + var after; + var parentNode; + var startNode = range.startNode; + var endNode = range.endNode; + var matchIndex = range.matchIndex; + if (startNode === endNode) { + var node_1 = startNode; + parentNode = node_1.parentNode; + if (range.startNodeIndex > 0) { + before = doc.createTextNode(node_1.data.substring(0, range.startNodeIndex)); + parentNode.insertBefore(before, node_1); + } + var el = makeReplacementNode(range.match[0], matchIndex); + parentNode.insertBefore(el, node_1); + if (range.endNodeIndex < node_1.length) { + after = doc.createTextNode(node_1.data.substring(range.endNodeIndex)); + parentNode.insertBefore(after, node_1); + } + node_1.parentNode.removeChild(node_1); + return el; + } + before = doc.createTextNode(startNode.data.substring(0, range.startNodeIndex)); + after = doc.createTextNode(endNode.data.substring(range.endNodeIndex)); + var elA = makeReplacementNode(startNode.data.substring(range.startNodeIndex), matchIndex); + for (var i = 0, l = range.innerNodes.length; i < l; ++i) { + var innerNode = range.innerNodes[i]; + var innerEl = makeReplacementNode(innerNode.data, matchIndex); + innerNode.parentNode.replaceChild(innerEl, innerNode); + } + var elB = makeReplacementNode(endNode.data.substring(0, range.endNodeIndex), matchIndex); + parentNode = startNode.parentNode; + parentNode.insertBefore(before, startNode); + parentNode.insertBefore(elA, startNode); + parentNode.removeChild(startNode); + parentNode = endNode.parentNode; + parentNode.insertBefore(elB, endNode); + parentNode.insertBefore(after, endNode); + parentNode.removeChild(endNode); + return elB; + }; + } + text = getText(node); + if (!text) { + return; + } + if (regex.global) { + while (m = regex.exec(text)) { + matches.push(getMatchIndexes(m, captureGroup)); + } + } else { + m = text.match(regex); + matches.push(getMatchIndexes(m, captureGroup)); + } + if (matches.length) { + count = matches.length; + stepThroughMatches(node, matches, genReplacer(replacementNode)); + } + return count; + } + var FindReplaceText = { findAndReplaceDOMText: findAndReplaceDOMText }; + + var getElmIndex = function (elm) { + var value = elm.getAttribute('data-mce-index'); + if (typeof value === 'number') { + return '' + value; + } + return value; + }; + var markAllMatches = function (editor, currentIndexState, regex) { + var node, marker; + marker = editor.dom.create('span', { 'data-mce-bogus': 1 }); + marker.className = 'mce-match-marker'; + node = editor.getBody(); + done(editor, currentIndexState, false); + return FindReplaceText.findAndReplaceDOMText(regex, node, marker, false, editor.schema); + }; + var unwrap = function (node) { + var parentNode = node.parentNode; + if (node.firstChild) { + parentNode.insertBefore(node.firstChild, node); + } + node.parentNode.removeChild(node); + }; + var findSpansByIndex = function (editor, index) { + var nodes; + var spans = []; + nodes = global$1.toArray(editor.getBody().getElementsByTagName('span')); + if (nodes.length) { + for (var i = 0; i < nodes.length; i++) { + var nodeIndex = getElmIndex(nodes[i]); + if (nodeIndex === null || !nodeIndex.length) { + continue; + } + if (nodeIndex === index.toString()) { + spans.push(nodes[i]); + } + } + } + return spans; + }; + var moveSelection = function (editor, currentIndexState, forward) { + var testIndex = currentIndexState.get(); + var dom = editor.dom; + forward = forward !== false; + if (forward) { + testIndex++; + } else { + testIndex--; + } + dom.removeClass(findSpansByIndex(editor, currentIndexState.get()), 'mce-match-marker-selected'); + var spans = findSpansByIndex(editor, testIndex); + if (spans.length) { + dom.addClass(findSpansByIndex(editor, testIndex), 'mce-match-marker-selected'); + editor.selection.scrollIntoView(spans[0]); + return testIndex; + } + return -1; + }; + var removeNode = function (dom, node) { + var parent = node.parentNode; + dom.remove(node); + if (dom.isEmpty(parent)) { + dom.remove(parent); + } + }; + var find = function (editor, currentIndexState, text, matchCase, wholeWord) { + text = text.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&'); + text = text.replace(/\s/g, '[^\\S\\r\\n]'); + text = wholeWord ? '\\b' + text + '\\b' : text; + var count = markAllMatches(editor, currentIndexState, new RegExp(text, matchCase ? 'g' : 'gi')); + if (count) { + currentIndexState.set(-1); + currentIndexState.set(moveSelection(editor, currentIndexState, true)); + } + return count; + }; + var next = function (editor, currentIndexState) { + var index = moveSelection(editor, currentIndexState, true); + if (index !== -1) { + currentIndexState.set(index); + } + }; + var prev = function (editor, currentIndexState) { + var index = moveSelection(editor, currentIndexState, false); + if (index !== -1) { + currentIndexState.set(index); + } + }; + var isMatchSpan = function (node) { + var matchIndex = getElmIndex(node); + return matchIndex !== null && matchIndex.length > 0; + }; + var replace = function (editor, currentIndexState, text, forward, all) { + var i, nodes, node, matchIndex, currentMatchIndex, nextIndex = currentIndexState.get(), hasMore; + forward = forward !== false; + node = editor.getBody(); + nodes = global$1.grep(global$1.toArray(node.getElementsByTagName('span')), isMatchSpan); + for (i = 0; i < nodes.length; i++) { + var nodeIndex = getElmIndex(nodes[i]); + matchIndex = currentMatchIndex = parseInt(nodeIndex, 10); + if (all || matchIndex === currentIndexState.get()) { + if (text.length) { + nodes[i].firstChild.nodeValue = text; + unwrap(nodes[i]); + } else { + removeNode(editor.dom, nodes[i]); + } + while (nodes[++i]) { + matchIndex = parseInt(getElmIndex(nodes[i]), 10); + if (matchIndex === currentMatchIndex) { + removeNode(editor.dom, nodes[i]); + } else { + i--; + break; + } + } + if (forward) { + nextIndex--; + } + } else if (currentMatchIndex > currentIndexState.get()) { + nodes[i].setAttribute('data-mce-index', currentMatchIndex - 1); + } + } + currentIndexState.set(nextIndex); + if (forward) { + hasMore = hasNext(editor, currentIndexState); + next(editor, currentIndexState); + } else { + hasMore = hasPrev(editor, currentIndexState); + prev(editor, currentIndexState); + } + return !all && hasMore; + }; + var done = function (editor, currentIndexState, keepEditorSelection) { + var i, nodes, startContainer, endContainer; + nodes = global$1.toArray(editor.getBody().getElementsByTagName('span')); + for (i = 0; i < nodes.length; i++) { + var nodeIndex = getElmIndex(nodes[i]); + if (nodeIndex !== null && nodeIndex.length) { + if (nodeIndex === currentIndexState.get().toString()) { + if (!startContainer) { + startContainer = nodes[i].firstChild; + } + endContainer = nodes[i].firstChild; + } + unwrap(nodes[i]); + } + } + if (startContainer && endContainer) { + var rng = editor.dom.createRng(); + rng.setStart(startContainer, 0); + rng.setEnd(endContainer, endContainer.data.length); + if (keepEditorSelection !== false) { + editor.selection.setRng(rng); + } + return rng; + } + }; + var hasNext = function (editor, currentIndexState) { + return findSpansByIndex(editor, currentIndexState.get() + 1).length > 0; + }; + var hasPrev = function (editor, currentIndexState) { + return findSpansByIndex(editor, currentIndexState.get() - 1).length > 0; + }; + var Actions = { + done: done, + find: find, + next: next, + prev: prev, + replace: replace, + hasNext: hasNext, + hasPrev: hasPrev + }; + + var get = function (editor, currentIndexState) { + var done = function (keepEditorSelection) { + return Actions.done(editor, currentIndexState, keepEditorSelection); + }; + var find = function (text, matchCase, wholeWord) { + return Actions.find(editor, currentIndexState, text, matchCase, wholeWord); + }; + var next = function () { + return Actions.next(editor, currentIndexState); + }; + var prev = function () { + return Actions.prev(editor, currentIndexState); + }; + var replace = function (text, forward, all) { + return Actions.replace(editor, currentIndexState, text, forward, all); + }; + return { + done: done, + find: find, + next: next, + prev: prev, + replace: replace + }; + }; + var Api = { get: get }; + + var open = function (editor, currentIndexState) { + var last = {}, selectedText; + editor.undoManager.add(); + selectedText = global$1.trim(editor.selection.getContent({ format: 'text' })); + function updateButtonStates() { + win.statusbar.find('#next').disabled(Actions.hasNext(editor, currentIndexState) === false); + win.statusbar.find('#prev').disabled(Actions.hasPrev(editor, currentIndexState) === false); + } + function notFoundAlert() { + editor.windowManager.alert('Could not find the specified string.', function () { + win.find('#find')[0].focus(); + }); + } + var win = editor.windowManager.open({ + layout: 'flex', + pack: 'center', + align: 'center', + onClose: function () { + editor.focus(); + Actions.done(editor, currentIndexState); + editor.undoManager.add(); + }, + onSubmit: function (e) { + var count, caseState, text, wholeWord; + e.preventDefault(); + caseState = win.find('#case').checked(); + wholeWord = win.find('#words').checked(); + text = win.find('#find').value(); + if (!text.length) { + Actions.done(editor, currentIndexState, false); + win.statusbar.items().slice(1).disabled(true); + return; + } + if (last.text === text && last.caseState === caseState && last.wholeWord === wholeWord) { + if (!Actions.hasNext(editor, currentIndexState)) { + notFoundAlert(); + return; + } + Actions.next(editor, currentIndexState); + updateButtonStates(); + return; + } + count = Actions.find(editor, currentIndexState, text, caseState, wholeWord); + if (!count) { + notFoundAlert(); + } + win.statusbar.items().slice(1).disabled(count === 0); + updateButtonStates(); + last = { + text: text, + caseState: caseState, + wholeWord: wholeWord + }; + }, + buttons: [ + { + text: 'Find', + subtype: 'primary', + onclick: function () { + win.submit(); + } + }, + { + text: 'Replace', + disabled: true, + onclick: function () { + if (!Actions.replace(editor, currentIndexState, win.find('#replace').value())) { + win.statusbar.items().slice(1).disabled(true); + currentIndexState.set(-1); + last = {}; + } + } + }, + { + text: 'Replace all', + disabled: true, + onclick: function () { + Actions.replace(editor, currentIndexState, win.find('#replace').value(), true, true); + win.statusbar.items().slice(1).disabled(true); + last = {}; + } + }, + { + type: 'spacer', + flex: 1 + }, + { + text: 'Prev', + name: 'prev', + disabled: true, + onclick: function () { + Actions.prev(editor, currentIndexState); + updateButtonStates(); + } + }, + { + text: 'Next', + name: 'next', + disabled: true, + onclick: function () { + Actions.next(editor, currentIndexState); + updateButtonStates(); + } + } + ], + title: 'Find and replace', + items: { + type: 'form', + padding: 20, + labelGap: 30, + spacing: 10, + items: [ + { + type: 'textbox', + name: 'find', + size: 40, + label: 'Find', + value: selectedText + }, + { + type: 'textbox', + name: 'replace', + size: 40, + label: 'Replace with' + }, + { + type: 'checkbox', + name: 'case', + text: 'Match case', + label: ' ' + }, + { + type: 'checkbox', + name: 'words', + text: 'Whole words', + label: ' ' + } + ] + } + }); + }; + var Dialog = { open: open }; + + var register = function (editor, currentIndexState) { + editor.addCommand('SearchReplace', function () { + Dialog.open(editor, currentIndexState); + }); + }; + var Commands = { register: register }; + + var showDialog = function (editor, currentIndexState) { + return function () { + Dialog.open(editor, currentIndexState); + }; + }; + var register$1 = function (editor, currentIndexState) { + editor.addMenuItem('searchreplace', { + text: 'Find and replace', + shortcut: 'Meta+F', + onclick: showDialog(editor, currentIndexState), + separator: 'before', + context: 'edit' + }); + editor.addButton('searchreplace', { + tooltip: 'Find and replace', + onclick: showDialog(editor, currentIndexState) + }); + editor.shortcuts.add('Meta+F', '', showDialog(editor, currentIndexState)); + }; + var Buttons = { register: register$1 }; + + global.add('searchreplace', function (editor) { + var currentIndexState = Cell(-1); + Commands.register(editor, currentIndexState); + Buttons.register(editor, currentIndexState); + return Api.get(editor, currentIndexState); + }); + function Plugin () { + } + + return Plugin; + +}()); +})(); diff --git a/wp-content/plugins/tinymce-advanced/mce/searchreplace/plugin.min.js b/wp-content/plugins/tinymce-advanced/mce/searchreplace/plugin.min.js new file mode 100644 index 0000000..f63ed05 --- /dev/null +++ b/wp-content/plugins/tinymce-advanced/mce/searchreplace/plugin.min.js @@ -0,0 +1 @@ +!function(){"use strict";var r=function(e){var t=e,n=function(){return t};return{get:n,set:function(e){t=e},clone:function(){return r(n())}}},e=tinymce.util.Tools.resolve("tinymce.PluginManager"),p=tinymce.util.Tools.resolve("tinymce.util.Tools");function h(e){return e&&1===e.nodeType&&"false"===e.contentEditable}var u={findAndReplaceDOMText:function(t,n,r,a,i){var o,d,m,f,p,g,c=[],l=0;function s(e,t){if(t=t||0,!e[0])throw new Error("findAndReplaceDOMText cannot handle zero-length matches");var n=e.index;if(0=s[1]?(a=l,o=s[1]-c):r&&d.push(l),!r&&l.length+c>s[0]&&(r=l,i=s[0]-c),c+=l.length),r&&a){if(l=n({startNode:r,startNodeIndex:i,endNode:a,endNodeIndex:o,innerNodes:d,match:s[2],matchIndex:u}),c-=a.length-o,a=r=null,d=[],u++,!(s=t.shift()))break}else if(p[l.nodeName]&&!f[l.nodeName]||!l.firstChild){if(l.nextSibling){l=l.nextSibling;continue}}else if(!h(l)){l=l.firstChild;continue}for(;;){if(l.nextSibling){l=l.nextSibling;break}if(l.parentNode===e)break e;l=l.parentNode}}}(n,c,function(e){var h;if("function"!=typeof e){var r=e.nodeType?e:m.createElement(e);h=function(e,t){var n=r.cloneNode(!1);return n.setAttribute("data-mce-index",t),e&&n.appendChild(m.createTextNode(e)),n}}else h=e;return function(e){var t,n,r,a=e.startNode,i=e.endNode,o=e.matchIndex;if(a===i){var d=a;r=d.parentNode,0t.get()&&o[i].setAttribute("data-mce-index",l-1)}return t.set(u),r?(s=k(e,t),x(e,t)):(s=C(e,t),b(e,t)),!a&&s},hasNext:k,hasPrev:C},n=function(r,a){return{done:function(e){return T.done(r,a,e)},find:function(e,t,n){return T.find(r,a,e,t,n)},next:function(){return T.next(r,a)},prev:function(){return T.prev(r,a)},replace:function(e,t,n){return T.replace(r,a,e,t,n)}}},a=function(i,o){var e,d={};function c(){s.statusbar.find("#next").disabled(!1===T.hasNext(i,o)),s.statusbar.find("#prev").disabled(!1===T.hasPrev(i,o))}function l(){i.windowManager.alert("Could not find the specified string.",function(){s.find("#find")[0].focus()})}i.undoManager.add(),e=p.trim(i.selection.getContent({format:"text"}));var s=i.windowManager.open({layout:"flex",pack:"center",align:"center",onClose:function(){i.focus(),T.done(i,o),i.undoManager.add()},onSubmit:function(e){var t,n,r,a;return e.preventDefault(),n=s.find("#case").checked(),a=s.find("#words").checked(),(r=s.find("#find").value()).length?d.text===r&&d.caseState===n&&d.wholeWord===a?T.hasNext(i,o)?(T.next(i,o),void c()):void l():((t=T.find(i,o,r,n,a))||l(),s.statusbar.items().slice(1).disabled(0===t),c(),void(d={text:r,caseState:n,wholeWord:a})):(T.done(i,o,!1),void s.statusbar.items().slice(1).disabled(!0))},buttons:[{text:"Find",subtype:"primary",onclick:function(){s.submit()}},{text:"Replace",disabled:!0,onclick:function(){T.replace(i,o,s.find("#replace").value())||(s.statusbar.items().slice(1).disabled(!0),o.set(-1),d={})}},{text:"Replace all",disabled:!0,onclick:function(){T.replace(i,o,s.find("#replace").value(),!0,!0),s.statusbar.items().slice(1).disabled(!0),d={}}},{type:"spacer",flex:1},{text:"Prev",name:"prev",disabled:!0,onclick:function(){T.prev(i,o),c()}},{text:"Next",name:"next",disabled:!0,onclick:function(){T.next(i,o),c()}}],title:"Find and replace",items:{type:"form",padding:20,labelGap:30,spacing:10,items:[{type:"textbox",name:"find",size:40,label:"Find",value:e},{type:"textbox",name:"replace",size:40,label:"Replace with"},{type:"checkbox",name:"case",text:"Match case",label:" "},{type:"checkbox",name:"words",text:"Whole words",label:" "}]}})},i=function(e,t){e.addCommand("SearchReplace",function(){a(e,t)})},d=function(e,t){return function(){a(e,t)}},c=function(e,t){e.addMenuItem("searchreplace",{text:"Find and replace",shortcut:"Meta+F",onclick:d(e,t),separator:"before",context:"edit"}),e.addButton("searchreplace",{tooltip:"Find and replace",onclick:d(e,t)}),e.shortcuts.add("Meta+F","",d(e,t))};e.add("searchreplace",function(e){var t=r(-1);return i(e,t),c(e,t),n(e,t)})}(); \ No newline at end of file diff --git a/wp-content/plugins/tinymce-advanced/mce/table/plugin.js b/wp-content/plugins/tinymce-advanced/mce/table/plugin.js new file mode 100644 index 0000000..ae544c3 --- /dev/null +++ b/wp-content/plugins/tinymce-advanced/mce/table/plugin.js @@ -0,0 +1,9270 @@ +(function () { +var table = (function (domGlobals) { + 'use strict'; + + var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); + + var noop = function () { + }; + var compose = function (fa, fb) { + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return fa(fb.apply(null, args)); + }; + }; + var constant = function (value) { + return function () { + return value; + }; + }; + var identity = function (x) { + return x; + }; + function curry(fn) { + var initialArgs = []; + for (var _i = 1; _i < arguments.length; _i++) { + initialArgs[_i - 1] = arguments[_i]; + } + return function () { + var restArgs = []; + for (var _i = 0; _i < arguments.length; _i++) { + restArgs[_i] = arguments[_i]; + } + var all = initialArgs.concat(restArgs); + return fn.apply(null, all); + }; + } + var not = function (f) { + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return !f.apply(null, args); + }; + }; + var die = function (msg) { + return function () { + throw new Error(msg); + }; + }; + var never = constant(false); + var always = constant(true); + + var none = function () { + return NONE; + }; + var NONE = function () { + var eq = function (o) { + return o.isNone(); + }; + var call = function (thunk) { + return thunk(); + }; + var id = function (n) { + return n; + }; + var me = { + fold: function (n, s) { + return n(); + }, + is: never, + isSome: never, + isNone: always, + getOr: id, + getOrThunk: call, + getOrDie: function (msg) { + throw new Error(msg || 'error: getOrDie called on none.'); + }, + getOrNull: constant(null), + getOrUndefined: constant(undefined), + or: id, + orThunk: call, + map: none, + each: noop, + bind: none, + exists: never, + forall: always, + filter: none, + equals: eq, + equals_: eq, + toArray: function () { + return []; + }, + toString: constant('none()') + }; + if (Object.freeze) { + Object.freeze(me); + } + return me; + }(); + var some = function (a) { + var constant_a = constant(a); + var self = function () { + return me; + }; + var bind = function (f) { + return f(a); + }; + var me = { + fold: function (n, s) { + return s(a); + }, + is: function (v) { + return a === v; + }, + isSome: always, + isNone: never, + getOr: constant_a, + getOrThunk: constant_a, + getOrDie: constant_a, + getOrNull: constant_a, + getOrUndefined: constant_a, + or: self, + orThunk: self, + map: function (f) { + return some(f(a)); + }, + each: function (f) { + f(a); + }, + bind: bind, + exists: bind, + forall: bind, + filter: function (f) { + return f(a) ? me : NONE; + }, + toArray: function () { + return [a]; + }, + toString: function () { + return 'some(' + a + ')'; + }, + equals: function (o) { + return o.is(a); + }, + equals_: function (o, elementEq) { + return o.fold(never, function (b) { + return elementEq(a, b); + }); + } + }; + return me; + }; + var from = function (value) { + return value === null || value === undefined ? NONE : some(value); + }; + var Option = { + some: some, + none: none, + from: from + }; + + var typeOf = function (x) { + if (x === null) { + return 'null'; + } + var t = typeof x; + if (t === 'object' && (Array.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'Array')) { + return 'array'; + } + if (t === 'object' && (String.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'String')) { + return 'string'; + } + return t; + }; + var isType = function (type) { + return function (value) { + return typeOf(value) === type; + }; + }; + var isString = isType('string'); + var isArray = isType('array'); + var isBoolean = isType('boolean'); + var isFunction = isType('function'); + var isNumber = isType('number'); + + var nativeSlice = Array.prototype.slice; + var nativeIndexOf = Array.prototype.indexOf; + var nativePush = Array.prototype.push; + var rawIndexOf = function (ts, t) { + return nativeIndexOf.call(ts, t); + }; + var contains = function (xs, x) { + return rawIndexOf(xs, x) > -1; + }; + var exists = function (xs, pred) { + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + if (pred(x, i)) { + return true; + } + } + return false; + }; + var map = function (xs, f) { + var len = xs.length; + var r = new Array(len); + for (var i = 0; i < len; i++) { + var x = xs[i]; + r[i] = f(x, i); + } + return r; + }; + var each = function (xs, f) { + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + f(x, i); + } + }; + var eachr = function (xs, f) { + for (var i = xs.length - 1; i >= 0; i--) { + var x = xs[i]; + f(x, i); + } + }; + var filter = function (xs, pred) { + var r = []; + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + if (pred(x, i)) { + r.push(x); + } + } + return r; + }; + var foldr = function (xs, f, acc) { + eachr(xs, function (x) { + acc = f(acc, x); + }); + return acc; + }; + var foldl = function (xs, f, acc) { + each(xs, function (x) { + acc = f(acc, x); + }); + return acc; + }; + var find = function (xs, pred) { + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + if (pred(x, i)) { + return Option.some(x); + } + } + return Option.none(); + }; + var findIndex = function (xs, pred) { + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + if (pred(x, i)) { + return Option.some(i); + } + } + return Option.none(); + }; + var flatten = function (xs) { + var r = []; + for (var i = 0, len = xs.length; i < len; ++i) { + if (!isArray(xs[i])) { + throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs); + } + nativePush.apply(r, xs[i]); + } + return r; + }; + var bind = function (xs, f) { + var output = map(xs, f); + return flatten(output); + }; + var forall = function (xs, pred) { + for (var i = 0, len = xs.length; i < len; ++i) { + var x = xs[i]; + if (pred(x, i) !== true) { + return false; + } + } + return true; + }; + var reverse = function (xs) { + var r = nativeSlice.call(xs, 0); + r.reverse(); + return r; + }; + var last = function (xs) { + return xs.length === 0 ? Option.none() : Option.some(xs[xs.length - 1]); + }; + var from$1 = isFunction(Array.from) ? Array.from : function (x) { + return nativeSlice.call(x); + }; + + var keys = Object.keys; + var each$1 = function (obj, f) { + var props = keys(obj); + for (var k = 0, len = props.length; k < len; k++) { + var i = props[k]; + var x = obj[i]; + f(x, i); + } + }; + var map$1 = function (obj, f) { + return tupleMap(obj, function (x, i) { + return { + k: i, + v: f(x, i) + }; + }); + }; + var tupleMap = function (obj, f) { + var r = {}; + each$1(obj, function (x, i) { + var tuple = f(x, i); + r[tuple.k] = tuple.v; + }); + return r; + }; + + var Immutable = function () { + var fields = []; + for (var _i = 0; _i < arguments.length; _i++) { + fields[_i] = arguments[_i]; + } + return function () { + var values = []; + for (var _i = 0; _i < arguments.length; _i++) { + values[_i] = arguments[_i]; + } + if (fields.length !== values.length) { + throw new Error('Wrong number of arguments to struct. Expected "[' + fields.length + ']", got ' + values.length + ' arguments'); + } + var struct = {}; + each(fields, function (name, i) { + struct[name] = constant(values[i]); + }); + return struct; + }; + }; + + var sort = function (arr) { + return arr.slice(0).sort(); + }; + var reqMessage = function (required, keys) { + throw new Error('All required keys (' + sort(required).join(', ') + ') were not specified. Specified keys were: ' + sort(keys).join(', ') + '.'); + }; + var unsuppMessage = function (unsupported) { + throw new Error('Unsupported keys for object: ' + sort(unsupported).join(', ')); + }; + var validateStrArr = function (label, array) { + if (!isArray(array)) { + throw new Error('The ' + label + ' fields must be an array. Was: ' + array + '.'); + } + each(array, function (a) { + if (!isString(a)) { + throw new Error('The value ' + a + ' in the ' + label + ' fields was not a string.'); + } + }); + }; + var invalidTypeMessage = function (incorrect, type) { + throw new Error('All values need to be of type: ' + type + '. Keys (' + sort(incorrect).join(', ') + ') were not.'); + }; + var checkDupes = function (everything) { + var sorted = sort(everything); + var dupe = find(sorted, function (s, i) { + return i < sorted.length - 1 && s === sorted[i + 1]; + }); + dupe.each(function (d) { + throw new Error('The field: ' + d + ' occurs more than once in the combined fields: [' + sorted.join(', ') + '].'); + }); + }; + + var MixedBag = function (required, optional) { + var everything = required.concat(optional); + if (everything.length === 0) { + throw new Error('You must specify at least one required or optional field.'); + } + validateStrArr('required', required); + validateStrArr('optional', optional); + checkDupes(everything); + return function (obj) { + var keys$1 = keys(obj); + var allReqd = forall(required, function (req) { + return contains(keys$1, req); + }); + if (!allReqd) { + reqMessage(required, keys$1); + } + var unsupported = filter(keys$1, function (key) { + return !contains(everything, key); + }); + if (unsupported.length > 0) { + unsuppMessage(unsupported); + } + var r = {}; + each(required, function (req) { + r[req] = constant(obj[req]); + }); + each(optional, function (opt) { + r[opt] = constant(Object.prototype.hasOwnProperty.call(obj, opt) ? Option.some(obj[opt]) : Option.none()); + }); + return r; + }; + }; + + var ATTRIBUTE = domGlobals.Node.ATTRIBUTE_NODE; + var CDATA_SECTION = domGlobals.Node.CDATA_SECTION_NODE; + var COMMENT = domGlobals.Node.COMMENT_NODE; + var DOCUMENT = domGlobals.Node.DOCUMENT_NODE; + var DOCUMENT_TYPE = domGlobals.Node.DOCUMENT_TYPE_NODE; + var DOCUMENT_FRAGMENT = domGlobals.Node.DOCUMENT_FRAGMENT_NODE; + var ELEMENT = domGlobals.Node.ELEMENT_NODE; + var TEXT = domGlobals.Node.TEXT_NODE; + var PROCESSING_INSTRUCTION = domGlobals.Node.PROCESSING_INSTRUCTION_NODE; + var ENTITY_REFERENCE = domGlobals.Node.ENTITY_REFERENCE_NODE; + var ENTITY = domGlobals.Node.ENTITY_NODE; + var NOTATION = domGlobals.Node.NOTATION_NODE; + + var Global = typeof domGlobals.window !== 'undefined' ? domGlobals.window : Function('return this;')(); + + var path = function (parts, scope) { + var o = scope !== undefined && scope !== null ? scope : Global; + for (var i = 0; i < parts.length && o !== undefined && o !== null; ++i) { + o = o[parts[i]]; + } + return o; + }; + var resolve = function (p, scope) { + var parts = p.split('.'); + return path(parts, scope); + }; + + var unsafe = function (name, scope) { + return resolve(name, scope); + }; + var getOrDie = function (name, scope) { + var actual = unsafe(name, scope); + if (actual === undefined || actual === null) { + throw new Error(name + ' not available on this browser'); + } + return actual; + }; + var Global$1 = { getOrDie: getOrDie }; + + var name = function (element) { + var r = element.dom().nodeName; + return r.toLowerCase(); + }; + var type = function (element) { + return element.dom().nodeType; + }; + var isType$1 = function (t) { + return function (element) { + return type(element) === t; + }; + }; + var isComment = function (element) { + return type(element) === COMMENT || name(element) === '#comment'; + }; + var isElement = isType$1(ELEMENT); + var isText = isType$1(TEXT); + + var rawSet = function (dom, key, value) { + if (isString(value) || isBoolean(value) || isNumber(value)) { + dom.setAttribute(key, value + ''); + } else { + domGlobals.console.error('Invalid call to Attr.set. Key ', key, ':: Value ', value, ':: Element ', dom); + throw new Error('Attribute value was not simple'); + } + }; + var set = function (element, key, value) { + rawSet(element.dom(), key, value); + }; + var setAll = function (element, attrs) { + var dom = element.dom(); + each$1(attrs, function (v, k) { + rawSet(dom, k, v); + }); + }; + var get = function (element, key) { + var v = element.dom().getAttribute(key); + return v === null ? undefined : v; + }; + var has = function (element, key) { + var dom = element.dom(); + return dom && dom.hasAttribute ? dom.hasAttribute(key) : false; + }; + var remove = function (element, key) { + element.dom().removeAttribute(key); + }; + var clone = function (element) { + return foldl(element.dom().attributes, function (acc, attr) { + acc[attr.name] = attr.value; + return acc; + }, {}); + }; + + var checkRange = function (str, substr, start) { + if (substr === '') { + return true; + } + if (str.length < substr.length) { + return false; + } + var x = str.substr(start, start + substr.length); + return x === substr; + }; + var contains$1 = function (str, substr) { + return str.indexOf(substr) !== -1; + }; + var endsWith = function (str, suffix) { + return checkRange(str, suffix, str.length - suffix.length); + }; + var trim = function (str) { + return str.replace(/^\s+|\s+$/g, ''); + }; + + var isSupported = function (dom) { + return dom.style !== undefined && isFunction(dom.style.getPropertyValue); + }; + + var cached = function (f) { + var called = false; + var r; + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + if (!called) { + called = true; + r = f.apply(null, args); + } + return r; + }; + }; + + var fromHtml = function (html, scope) { + var doc = scope || domGlobals.document; + var div = doc.createElement('div'); + div.innerHTML = html; + if (!div.hasChildNodes() || div.childNodes.length > 1) { + domGlobals.console.error('HTML does not have a single root node', html); + throw new Error('HTML must have a single root node'); + } + return fromDom(div.childNodes[0]); + }; + var fromTag = function (tag, scope) { + var doc = scope || domGlobals.document; + var node = doc.createElement(tag); + return fromDom(node); + }; + var fromText = function (text, scope) { + var doc = scope || domGlobals.document; + var node = doc.createTextNode(text); + return fromDom(node); + }; + var fromDom = function (node) { + if (node === null || node === undefined) { + throw new Error('Node cannot be null or undefined'); + } + return { dom: constant(node) }; + }; + var fromPoint = function (docElm, x, y) { + var doc = docElm.dom(); + return Option.from(doc.elementFromPoint(x, y)).map(fromDom); + }; + var Element = { + fromHtml: fromHtml, + fromTag: fromTag, + fromText: fromText, + fromDom: fromDom, + fromPoint: fromPoint + }; + + var inBody = function (element) { + var dom = isText(element) ? element.dom().parentNode : element.dom(); + return dom !== undefined && dom !== null && dom.ownerDocument.body.contains(dom); + }; + var body = cached(function () { + return getBody(Element.fromDom(domGlobals.document)); + }); + var getBody = function (doc) { + var b = doc.dom().body; + if (b === null || b === undefined) { + throw new Error('Body is not available yet'); + } + return Element.fromDom(b); + }; + + var internalSet = function (dom, property, value) { + if (!isString(value)) { + domGlobals.console.error('Invalid call to CSS.set. Property ', property, ':: Value ', value, ':: Element ', dom); + throw new Error('CSS value must be a string: ' + value); + } + if (isSupported(dom)) { + dom.style.setProperty(property, value); + } + }; + var internalRemove = function (dom, property) { + if (isSupported(dom)) { + dom.style.removeProperty(property); + } + }; + var set$1 = function (element, property, value) { + var dom = element.dom(); + internalSet(dom, property, value); + }; + var setAll$1 = function (element, css) { + var dom = element.dom(); + each$1(css, function (v, k) { + internalSet(dom, k, v); + }); + }; + var get$1 = function (element, property) { + var dom = element.dom(); + var styles = domGlobals.window.getComputedStyle(dom); + var r = styles.getPropertyValue(property); + var v = r === '' && !inBody(element) ? getUnsafeProperty(dom, property) : r; + return v === null ? undefined : v; + }; + var getUnsafeProperty = function (dom, property) { + return isSupported(dom) ? dom.style.getPropertyValue(property) : ''; + }; + var getRaw = function (element, property) { + var dom = element.dom(); + var raw = getUnsafeProperty(dom, property); + return Option.from(raw).filter(function (r) { + return r.length > 0; + }); + }; + var remove$1 = function (element, property) { + var dom = element.dom(); + internalRemove(dom, property); + if (has(element, 'style') && trim(get(element, 'style')) === '') { + remove(element, 'style'); + } + }; + var copy = function (source, target) { + var sourceDom = source.dom(); + var targetDom = target.dom(); + if (isSupported(sourceDom) && isSupported(targetDom)) { + targetDom.style.cssText = sourceDom.style.cssText; + } + }; + + var node = function () { + var f = Global$1.getOrDie('Node'); + return f; + }; + var compareDocumentPosition = function (a, b, match) { + return (a.compareDocumentPosition(b) & match) !== 0; + }; + var documentPositionPreceding = function (a, b) { + return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_PRECEDING); + }; + var documentPositionContainedBy = function (a, b) { + return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_CONTAINED_BY); + }; + var Node = { + documentPositionPreceding: documentPositionPreceding, + documentPositionContainedBy: documentPositionContainedBy + }; + + var firstMatch = function (regexes, s) { + for (var i = 0; i < regexes.length; i++) { + var x = regexes[i]; + if (x.test(s)) { + return x; + } + } + return undefined; + }; + var find$1 = function (regexes, agent) { + var r = firstMatch(regexes, agent); + if (!r) { + return { + major: 0, + minor: 0 + }; + } + var group = function (i) { + return Number(agent.replace(r, '$' + i)); + }; + return nu(group(1), group(2)); + }; + var detect = function (versionRegexes, agent) { + var cleanedAgent = String(agent).toLowerCase(); + if (versionRegexes.length === 0) { + return unknown(); + } + return find$1(versionRegexes, cleanedAgent); + }; + var unknown = function () { + return nu(0, 0); + }; + var nu = function (major, minor) { + return { + major: major, + minor: minor + }; + }; + var Version = { + nu: nu, + detect: detect, + unknown: unknown + }; + + var edge = 'Edge'; + var chrome = 'Chrome'; + var ie = 'IE'; + var opera = 'Opera'; + var firefox = 'Firefox'; + var safari = 'Safari'; + var isBrowser = function (name, current) { + return function () { + return current === name; + }; + }; + var unknown$1 = function () { + return nu$1({ + current: undefined, + version: Version.unknown() + }); + }; + var nu$1 = function (info) { + var current = info.current; + var version = info.version; + return { + current: current, + version: version, + isEdge: isBrowser(edge, current), + isChrome: isBrowser(chrome, current), + isIE: isBrowser(ie, current), + isOpera: isBrowser(opera, current), + isFirefox: isBrowser(firefox, current), + isSafari: isBrowser(safari, current) + }; + }; + var Browser = { + unknown: unknown$1, + nu: nu$1, + edge: constant(edge), + chrome: constant(chrome), + ie: constant(ie), + opera: constant(opera), + firefox: constant(firefox), + safari: constant(safari) + }; + + var windows = 'Windows'; + var ios = 'iOS'; + var android = 'Android'; + var linux = 'Linux'; + var osx = 'OSX'; + var solaris = 'Solaris'; + var freebsd = 'FreeBSD'; + var isOS = function (name, current) { + return function () { + return current === name; + }; + }; + var unknown$2 = function () { + return nu$2({ + current: undefined, + version: Version.unknown() + }); + }; + var nu$2 = function (info) { + var current = info.current; + var version = info.version; + return { + current: current, + version: version, + isWindows: isOS(windows, current), + isiOS: isOS(ios, current), + isAndroid: isOS(android, current), + isOSX: isOS(osx, current), + isLinux: isOS(linux, current), + isSolaris: isOS(solaris, current), + isFreeBSD: isOS(freebsd, current) + }; + }; + var OperatingSystem = { + unknown: unknown$2, + nu: nu$2, + windows: constant(windows), + ios: constant(ios), + android: constant(android), + linux: constant(linux), + osx: constant(osx), + solaris: constant(solaris), + freebsd: constant(freebsd) + }; + + var DeviceType = function (os, browser, userAgent) { + var isiPad = os.isiOS() && /ipad/i.test(userAgent) === true; + var isiPhone = os.isiOS() && !isiPad; + var isAndroid3 = os.isAndroid() && os.version.major === 3; + var isAndroid4 = os.isAndroid() && os.version.major === 4; + var isTablet = isiPad || isAndroid3 || isAndroid4 && /mobile/i.test(userAgent) === true; + var isTouch = os.isiOS() || os.isAndroid(); + var isPhone = isTouch && !isTablet; + var iOSwebview = browser.isSafari() && os.isiOS() && /safari/i.test(userAgent) === false; + return { + isiPad: constant(isiPad), + isiPhone: constant(isiPhone), + isTablet: constant(isTablet), + isPhone: constant(isPhone), + isTouch: constant(isTouch), + isAndroid: os.isAndroid, + isiOS: os.isiOS, + isWebView: constant(iOSwebview) + }; + }; + + var detect$1 = function (candidates, userAgent) { + var agent = String(userAgent).toLowerCase(); + return find(candidates, function (candidate) { + return candidate.search(agent); + }); + }; + var detectBrowser = function (browsers, userAgent) { + return detect$1(browsers, userAgent).map(function (browser) { + var version = Version.detect(browser.versionRegexes, userAgent); + return { + current: browser.name, + version: version + }; + }); + }; + var detectOs = function (oses, userAgent) { + return detect$1(oses, userAgent).map(function (os) { + var version = Version.detect(os.versionRegexes, userAgent); + return { + current: os.name, + version: version + }; + }); + }; + var UaString = { + detectBrowser: detectBrowser, + detectOs: detectOs + }; + + var normalVersionRegex = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/; + var checkContains = function (target) { + return function (uastring) { + return contains$1(uastring, target); + }; + }; + var browsers = [ + { + name: 'Edge', + versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/], + search: function (uastring) { + return contains$1(uastring, 'edge/') && contains$1(uastring, 'chrome') && contains$1(uastring, 'safari') && contains$1(uastring, 'applewebkit'); + } + }, + { + name: 'Chrome', + versionRegexes: [ + /.*?chrome\/([0-9]+)\.([0-9]+).*/, + normalVersionRegex + ], + search: function (uastring) { + return contains$1(uastring, 'chrome') && !contains$1(uastring, 'chromeframe'); + } + }, + { + name: 'IE', + versionRegexes: [ + /.*?msie\ ?([0-9]+)\.([0-9]+).*/, + /.*?rv:([0-9]+)\.([0-9]+).*/ + ], + search: function (uastring) { + return contains$1(uastring, 'msie') || contains$1(uastring, 'trident'); + } + }, + { + name: 'Opera', + versionRegexes: [ + normalVersionRegex, + /.*?opera\/([0-9]+)\.([0-9]+).*/ + ], + search: checkContains('opera') + }, + { + name: 'Firefox', + versionRegexes: [/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/], + search: checkContains('firefox') + }, + { + name: 'Safari', + versionRegexes: [ + normalVersionRegex, + /.*?cpu os ([0-9]+)_([0-9]+).*/ + ], + search: function (uastring) { + return (contains$1(uastring, 'safari') || contains$1(uastring, 'mobile/')) && contains$1(uastring, 'applewebkit'); + } + } + ]; + var oses = [ + { + name: 'Windows', + search: checkContains('win'), + versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/] + }, + { + name: 'iOS', + search: function (uastring) { + return contains$1(uastring, 'iphone') || contains$1(uastring, 'ipad'); + }, + versionRegexes: [ + /.*?version\/\ ?([0-9]+)\.([0-9]+).*/, + /.*cpu os ([0-9]+)_([0-9]+).*/, + /.*cpu iphone os ([0-9]+)_([0-9]+).*/ + ] + }, + { + name: 'Android', + search: checkContains('android'), + versionRegexes: [/.*?android\ ?([0-9]+)\.([0-9]+).*/] + }, + { + name: 'OSX', + search: checkContains('os x'), + versionRegexes: [/.*?os\ x\ ?([0-9]+)_([0-9]+).*/] + }, + { + name: 'Linux', + search: checkContains('linux'), + versionRegexes: [] + }, + { + name: 'Solaris', + search: checkContains('sunos'), + versionRegexes: [] + }, + { + name: 'FreeBSD', + search: checkContains('freebsd'), + versionRegexes: [] + } + ]; + var PlatformInfo = { + browsers: constant(browsers), + oses: constant(oses) + }; + + var detect$2 = function (userAgent) { + var browsers = PlatformInfo.browsers(); + var oses = PlatformInfo.oses(); + var browser = UaString.detectBrowser(browsers, userAgent).fold(Browser.unknown, Browser.nu); + var os = UaString.detectOs(oses, userAgent).fold(OperatingSystem.unknown, OperatingSystem.nu); + var deviceType = DeviceType(os, browser, userAgent); + return { + browser: browser, + os: os, + deviceType: deviceType + }; + }; + var PlatformDetection = { detect: detect$2 }; + + var detect$3 = cached(function () { + var userAgent = domGlobals.navigator.userAgent; + return PlatformDetection.detect(userAgent); + }); + var PlatformDetection$1 = { detect: detect$3 }; + + var ELEMENT$1 = ELEMENT; + var DOCUMENT$1 = DOCUMENT; + var is = function (element, selector) { + var dom = element.dom(); + if (dom.nodeType !== ELEMENT$1) { + return false; + } else { + var elem = dom; + if (elem.matches !== undefined) { + return elem.matches(selector); + } else if (elem.msMatchesSelector !== undefined) { + return elem.msMatchesSelector(selector); + } else if (elem.webkitMatchesSelector !== undefined) { + return elem.webkitMatchesSelector(selector); + } else if (elem.mozMatchesSelector !== undefined) { + return elem.mozMatchesSelector(selector); + } else { + throw new Error('Browser lacks native selectors'); + } + } + }; + var bypassSelector = function (dom) { + return dom.nodeType !== ELEMENT$1 && dom.nodeType !== DOCUMENT$1 || dom.childElementCount === 0; + }; + var all = function (selector, scope) { + var base = scope === undefined ? domGlobals.document : scope.dom(); + return bypassSelector(base) ? [] : map(base.querySelectorAll(selector), Element.fromDom); + }; + var one = function (selector, scope) { + var base = scope === undefined ? domGlobals.document : scope.dom(); + return bypassSelector(base) ? Option.none() : Option.from(base.querySelector(selector)).map(Element.fromDom); + }; + + var eq = function (e1, e2) { + return e1.dom() === e2.dom(); + }; + var regularContains = function (e1, e2) { + var d1 = e1.dom(); + var d2 = e2.dom(); + return d1 === d2 ? false : d1.contains(d2); + }; + var ieContains = function (e1, e2) { + return Node.documentPositionContainedBy(e1.dom(), e2.dom()); + }; + var browser = PlatformDetection$1.detect().browser; + var contains$2 = browser.isIE() ? ieContains : regularContains; + var is$1 = is; + + var owner = function (element) { + return Element.fromDom(element.dom().ownerDocument); + }; + var defaultView = function (element) { + return Element.fromDom(element.dom().ownerDocument.defaultView); + }; + var parent = function (element) { + return Option.from(element.dom().parentNode).map(Element.fromDom); + }; + var parents = function (element, isRoot) { + var stop = isFunction(isRoot) ? isRoot : never; + var dom = element.dom(); + var ret = []; + while (dom.parentNode !== null && dom.parentNode !== undefined) { + var rawParent = dom.parentNode; + var p = Element.fromDom(rawParent); + ret.push(p); + if (stop(p) === true) { + break; + } else { + dom = rawParent; + } + } + return ret; + }; + var prevSibling = function (element) { + return Option.from(element.dom().previousSibling).map(Element.fromDom); + }; + var nextSibling = function (element) { + return Option.from(element.dom().nextSibling).map(Element.fromDom); + }; + var children = function (element) { + return map(element.dom().childNodes, Element.fromDom); + }; + var child = function (element, index) { + var cs = element.dom().childNodes; + return Option.from(cs[index]).map(Element.fromDom); + }; + var firstChild = function (element) { + return child(element, 0); + }; + var spot = Immutable('element', 'offset'); + + var before = function (marker, element) { + var parent$1 = parent(marker); + parent$1.each(function (v) { + v.dom().insertBefore(element.dom(), marker.dom()); + }); + }; + var after = function (marker, element) { + var sibling = nextSibling(marker); + sibling.fold(function () { + var parent$1 = parent(marker); + parent$1.each(function (v) { + append(v, element); + }); + }, function (v) { + before(v, element); + }); + }; + var prepend = function (parent, element) { + var firstChild$1 = firstChild(parent); + firstChild$1.fold(function () { + append(parent, element); + }, function (v) { + parent.dom().insertBefore(element.dom(), v.dom()); + }); + }; + var append = function (parent, element) { + parent.dom().appendChild(element.dom()); + }; + var wrap = function (element, wrapper) { + before(element, wrapper); + append(wrapper, element); + }; + + var before$1 = function (marker, elements) { + each(elements, function (x) { + before(marker, x); + }); + }; + var after$1 = function (marker, elements) { + each(elements, function (x, i) { + var e = i === 0 ? marker : elements[i - 1]; + after(e, x); + }); + }; + var append$1 = function (parent, elements) { + each(elements, function (x) { + append(parent, x); + }); + }; + + var empty = function (element) { + element.dom().textContent = ''; + each(children(element), function (rogue) { + remove$2(rogue); + }); + }; + var remove$2 = function (element) { + var dom = element.dom(); + if (dom.parentNode !== null) { + dom.parentNode.removeChild(dom); + } + }; + var unwrap = function (wrapper) { + var children$1 = children(wrapper); + if (children$1.length > 0) { + before$1(wrapper, children$1); + } + remove$2(wrapper); + }; + + var dimension = Immutable('width', 'height'); + var dimensions = Immutable('width', 'height'); + var grid = Immutable('rows', 'columns'); + var address = Immutable('row', 'column'); + var coords = Immutable('x', 'y'); + var detail = Immutable('element', 'rowspan', 'colspan'); + var detailnew = Immutable('element', 'rowspan', 'colspan', 'isNew'); + var extended = Immutable('element', 'rowspan', 'colspan', 'row', 'column'); + var rowdata = Immutable('element', 'cells', 'section'); + var elementnew = Immutable('element', 'isNew'); + var rowdatanew = Immutable('element', 'cells', 'section', 'isNew'); + var rowcells = Immutable('cells', 'section'); + var rowdetails = Immutable('details', 'section'); + var bounds = Immutable('startRow', 'startCol', 'finishRow', 'finishCol'); + + var ancestors = function (scope, predicate, isRoot) { + return filter(parents(scope, isRoot), predicate); + }; + var children$1 = function (scope, predicate) { + return filter(children(scope), predicate); + }; + var descendants = function (scope, predicate) { + var result = []; + each(children(scope), function (x) { + if (predicate(x)) { + result = result.concat([x]); + } + result = result.concat(descendants(x, predicate)); + }); + return result; + }; + + var ancestors$1 = function (scope, selector, isRoot) { + return ancestors(scope, function (e) { + return is(e, selector); + }, isRoot); + }; + var children$2 = function (scope, selector) { + return children$1(scope, function (e) { + return is(e, selector); + }); + }; + var descendants$1 = function (scope, selector) { + return all(selector, scope); + }; + + function ClosestOrAncestor (is, ancestor, scope, a, isRoot) { + return is(scope, a) ? Option.some(scope) : isFunction(isRoot) && isRoot(scope) ? Option.none() : ancestor(scope, a, isRoot); + } + + var ancestor = function (scope, predicate, isRoot) { + var element = scope.dom(); + var stop = isFunction(isRoot) ? isRoot : constant(false); + while (element.parentNode) { + element = element.parentNode; + var el = Element.fromDom(element); + if (predicate(el)) { + return Option.some(el); + } else if (stop(el)) { + break; + } + } + return Option.none(); + }; + var closest = function (scope, predicate, isRoot) { + var is = function (s, test) { + return test(s); + }; + return ClosestOrAncestor(is, ancestor, scope, predicate, isRoot); + }; + var child$1 = function (scope, predicate) { + var pred = function (node) { + return predicate(Element.fromDom(node)); + }; + var result = find(scope.dom().childNodes, pred); + return result.map(Element.fromDom); + }; + var descendant = function (scope, predicate) { + var descend = function (node) { + for (var i = 0; i < node.childNodes.length; i++) { + var child_1 = Element.fromDom(node.childNodes[i]); + if (predicate(child_1)) { + return Option.some(child_1); + } + var res = descend(node.childNodes[i]); + if (res.isSome()) { + return res; + } + } + return Option.none(); + }; + return descend(scope.dom()); + }; + + var ancestor$1 = function (scope, selector, isRoot) { + return ancestor(scope, function (e) { + return is(e, selector); + }, isRoot); + }; + var child$2 = function (scope, selector) { + return child$1(scope, function (e) { + return is(e, selector); + }); + }; + var descendant$1 = function (scope, selector) { + return one(selector, scope); + }; + var closest$1 = function (scope, selector, isRoot) { + return ClosestOrAncestor(is, ancestor$1, scope, selector, isRoot); + }; + + var firstLayer = function (scope, selector) { + return filterFirstLayer(scope, selector, constant(true)); + }; + var filterFirstLayer = function (scope, selector, predicate) { + return bind(children(scope), function (x) { + return is(x, selector) ? predicate(x) ? [x] : [] : filterFirstLayer(x, selector, predicate); + }); + }; + var LayerSelector = { + firstLayer: firstLayer, + filterFirstLayer: filterFirstLayer + }; + + var lookup = function (tags, element, isRoot) { + if (isRoot === void 0) { + isRoot = never; + } + if (isRoot(element)) { + return Option.none(); + } + if (contains(tags, name(element))) { + return Option.some(element); + } + var isRootOrUpperTable = function (elm) { + return is(elm, 'table') || isRoot(elm); + }; + return ancestor$1(element, tags.join(','), isRootOrUpperTable); + }; + var cell = function (element, isRoot) { + return lookup([ + 'td', + 'th' + ], element, isRoot); + }; + var cells = function (ancestor) { + return LayerSelector.firstLayer(ancestor, 'th,td'); + }; + var notCell = function (element, isRoot) { + return lookup([ + 'caption', + 'tr', + 'tbody', + 'tfoot', + 'thead' + ], element, isRoot); + }; + var neighbours = function (selector, element) { + return parent(element).map(function (parent) { + return children$2(parent, selector); + }); + }; + var neighbourCells = curry(neighbours, 'th,td'); + var neighbourRows = curry(neighbours, 'tr'); + var firstCell = function (ancestor) { + return descendant$1(ancestor, 'th,td'); + }; + var table = function (element, isRoot) { + return closest$1(element, 'table', isRoot); + }; + var row = function (element, isRoot) { + return lookup(['tr'], element, isRoot); + }; + var rows = function (ancestor) { + return LayerSelector.firstLayer(ancestor, 'tr'); + }; + var attr = function (element, property) { + return parseInt(get(element, property), 10); + }; + var grid$1 = function (element, rowProp, colProp) { + var rowsCount = attr(element, rowProp); + var cols = attr(element, colProp); + return grid(rowsCount, cols); + }; + var TableLookup = { + cell: cell, + firstCell: firstCell, + cells: cells, + neighbourCells: neighbourCells, + table: table, + row: row, + rows: rows, + notCell: notCell, + neighbourRows: neighbourRows, + attr: attr, + grid: grid$1 + }; + + var fromTable = function (table) { + var rows = TableLookup.rows(table); + return map(rows, function (row) { + var element = row; + var parent$1 = parent(element); + var parentSection = parent$1.map(function (p) { + var parentName = name(p); + return parentName === 'tfoot' || parentName === 'thead' || parentName === 'tbody' ? parentName : 'tbody'; + }).getOr('tbody'); + var cells = map(TableLookup.cells(row), function (cell) { + var rowspan = has(cell, 'rowspan') ? parseInt(get(cell, 'rowspan'), 10) : 1; + var colspan = has(cell, 'colspan') ? parseInt(get(cell, 'colspan'), 10) : 1; + return detail(cell, rowspan, colspan); + }); + return rowdata(element, cells, parentSection); + }); + }; + var fromPastedRows = function (rows, example) { + return map(rows, function (row) { + var cells = map(TableLookup.cells(row), function (cell) { + var rowspan = has(cell, 'rowspan') ? parseInt(get(cell, 'rowspan'), 10) : 1; + var colspan = has(cell, 'colspan') ? parseInt(get(cell, 'colspan'), 10) : 1; + return detail(cell, rowspan, colspan); + }); + return rowdata(row, cells, example.section()); + }); + }; + var DetailsList = { + fromTable: fromTable, + fromPastedRows: fromPastedRows + }; + + var key = function (row, column) { + return row + ',' + column; + }; + var getAt = function (warehouse, row, column) { + var raw = warehouse.access()[key(row, column)]; + return raw !== undefined ? Option.some(raw) : Option.none(); + }; + var findItem = function (warehouse, item, comparator) { + var filtered = filterItems(warehouse, function (detail) { + return comparator(item, detail.element()); + }); + return filtered.length > 0 ? Option.some(filtered[0]) : Option.none(); + }; + var filterItems = function (warehouse, predicate) { + var all = bind(warehouse.all(), function (r) { + return r.cells(); + }); + return filter(all, predicate); + }; + var generate = function (list) { + var access = {}; + var cells = []; + var maxRows = list.length; + var maxColumns = 0; + each(list, function (details, r) { + var currentRow = []; + each(details.cells(), function (detail) { + var start = 0; + while (access[key(r, start)] !== undefined) { + start++; + } + var current = extended(detail.element(), detail.rowspan(), detail.colspan(), r, start); + for (var i = 0; i < detail.colspan(); i++) { + for (var j = 0; j < detail.rowspan(); j++) { + var cr = r + j; + var cc = start + i; + var newpos = key(cr, cc); + access[newpos] = current; + maxColumns = Math.max(maxColumns, cc + 1); + } + } + currentRow.push(current); + }); + cells.push(rowdata(details.element(), currentRow, details.section())); + }); + var grid$1 = grid(maxRows, maxColumns); + return { + grid: constant(grid$1), + access: constant(access), + all: constant(cells) + }; + }; + var justCells = function (warehouse) { + var rows = map(warehouse.all(), function (w) { + return w.cells(); + }); + return flatten(rows); + }; + var Warehouse = { + generate: generate, + getAt: getAt, + findItem: findItem, + filterItems: filterItems, + justCells: justCells + }; + + var statsStruct = Immutable('minRow', 'minCol', 'maxRow', 'maxCol'); + var findSelectedStats = function (house, isSelected) { + var totalColumns = house.grid().columns(); + var totalRows = house.grid().rows(); + var minRow = totalRows; + var minCol = totalColumns; + var maxRow = 0; + var maxCol = 0; + each$1(house.access(), function (detail) { + if (isSelected(detail)) { + var startRow = detail.row(); + var endRow = startRow + detail.rowspan() - 1; + var startCol = detail.column(); + var endCol = startCol + detail.colspan() - 1; + if (startRow < minRow) { + minRow = startRow; + } else if (endRow > maxRow) { + maxRow = endRow; + } + if (startCol < minCol) { + minCol = startCol; + } else if (endCol > maxCol) { + maxCol = endCol; + } + } + }); + return statsStruct(minRow, minCol, maxRow, maxCol); + }; + var makeCell = function (list, seenSelected, rowIndex) { + var row = list[rowIndex].element(); + var td = Element.fromTag('td'); + append(td, Element.fromTag('br')); + var f = seenSelected ? append : prepend; + f(row, td); + }; + var fillInGaps = function (list, house, stats, isSelected) { + var totalColumns = house.grid().columns(); + var totalRows = house.grid().rows(); + for (var i = 0; i < totalRows; i++) { + var seenSelected = false; + for (var j = 0; j < totalColumns; j++) { + if (!(i < stats.minRow() || i > stats.maxRow() || j < stats.minCol() || j > stats.maxCol())) { + var needCell = Warehouse.getAt(house, i, j).filter(isSelected).isNone(); + if (needCell) { + makeCell(list, seenSelected, i); + } else { + seenSelected = true; + } + } + } + } + }; + var clean = function (table, stats) { + var emptyRows = filter(LayerSelector.firstLayer(table, 'tr'), function (row) { + return row.dom().childElementCount === 0; + }); + each(emptyRows, remove$2); + if (stats.minCol() === stats.maxCol() || stats.minRow() === stats.maxRow()) { + each(LayerSelector.firstLayer(table, 'th,td'), function (cell) { + remove(cell, 'rowspan'); + remove(cell, 'colspan'); + }); + } + remove(table, 'width'); + remove(table, 'height'); + remove$1(table, 'width'); + remove$1(table, 'height'); + }; + var extract = function (table, selectedSelector) { + var isSelected = function (detail) { + return is(detail.element(), selectedSelector); + }; + var list = DetailsList.fromTable(table); + var house = Warehouse.generate(list); + var stats = findSelectedStats(house, isSelected); + var selector = 'th:not(' + selectedSelector + ')' + ',td:not(' + selectedSelector + ')'; + var unselectedCells = LayerSelector.filterFirstLayer(table, 'th,td', function (cell) { + return is(cell, selector); + }); + each(unselectedCells, remove$2); + fillInGaps(list, house, stats, isSelected); + clean(table, stats); + return table; + }; + var CopySelected = { extract: extract }; + + function NodeValue (is, name) { + var get = function (element) { + if (!is(element)) { + throw new Error('Can only get ' + name + ' value of a ' + name + ' node'); + } + return getOption(element).getOr(''); + }; + var getOption = function (element) { + return is(element) ? Option.from(element.dom().nodeValue) : Option.none(); + }; + var set = function (element, value) { + if (!is(element)) { + throw new Error('Can only set raw ' + name + ' value of a ' + name + ' node'); + } + element.dom().nodeValue = value; + }; + return { + get: get, + getOption: getOption, + set: set + }; + } + + var api = NodeValue(isText, 'text'); + var get$2 = function (element) { + return api.get(element); + }; + var getOption = function (element) { + return api.getOption(element); + }; + var set$2 = function (element, value) { + api.set(element, value); + }; + + var getEnd = function (element) { + return name(element) === 'img' ? 1 : getOption(element).fold(function () { + return children(element).length; + }, function (v) { + return v.length; + }); + }; + var NBSP = '\xA0'; + var isTextNodeWithCursorPosition = function (el) { + return getOption(el).filter(function (text) { + return text.trim().length !== 0 || text.indexOf(NBSP) > -1; + }).isSome(); + }; + var elementsWithCursorPosition = [ + 'img', + 'br' + ]; + var isCursorPosition = function (elem) { + var hasCursorPosition = isTextNodeWithCursorPosition(elem); + return hasCursorPosition || contains(elementsWithCursorPosition, name(elem)); + }; + + var first = function (element) { + return descendant(element, isCursorPosition); + }; + var last$1 = function (element) { + return descendantRtl(element, isCursorPosition); + }; + var descendantRtl = function (scope, predicate) { + var descend = function (element) { + var children$1 = children(element); + for (var i = children$1.length - 1; i >= 0; i--) { + var child = children$1[i]; + if (predicate(child)) { + return Option.some(child); + } + var res = descend(child); + if (res.isSome()) { + return res; + } + } + return Option.none(); + }; + return descend(scope); + }; + + var clone$1 = function (original, isDeep) { + return Element.fromDom(original.dom().cloneNode(isDeep)); + }; + var shallow = function (original) { + return clone$1(original, false); + }; + var deep = function (original) { + return clone$1(original, true); + }; + var shallowAs = function (original, tag) { + var nu = Element.fromTag(tag); + var attributes = clone(original); + setAll(nu, attributes); + return nu; + }; + var copy$1 = function (original, tag) { + var nu = shallowAs(original, tag); + var cloneChildren = children(deep(original)); + append$1(nu, cloneChildren); + return nu; + }; + + var createCell = function () { + var td = Element.fromTag('td'); + append(td, Element.fromTag('br')); + return td; + }; + var replace = function (cell, tag, attrs) { + var replica = copy$1(cell, tag); + each$1(attrs, function (v, k) { + if (v === null) { + remove(replica, k); + } else { + set(replica, k, v); + } + }); + return replica; + }; + var pasteReplace = function (cell) { + return cell; + }; + var newRow = function (doc) { + return function () { + return Element.fromTag('tr', doc.dom()); + }; + }; + var cloneFormats = function (oldCell, newCell, formats) { + var first$1 = first(oldCell); + return first$1.map(function (firstText) { + var formatSelector = formats.join(','); + var parents = ancestors$1(firstText, formatSelector, function (element) { + return eq(element, oldCell); + }); + return foldr(parents, function (last, parent) { + var clonedFormat = shallow(parent); + remove(clonedFormat, 'contenteditable'); + append(last, clonedFormat); + return clonedFormat; + }, newCell); + }).getOr(newCell); + }; + var cellOperations = function (mutate, doc, formatsToClone) { + var newCell = function (prev) { + var docu = owner(prev.element()); + var td = Element.fromTag(name(prev.element()), docu.dom()); + var formats = formatsToClone.getOr([ + 'strong', + 'em', + 'b', + 'i', + 'span', + 'font', + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'p', + 'div' + ]); + var lastNode = formats.length > 0 ? cloneFormats(prev.element(), td, formats) : td; + append(lastNode, Element.fromTag('br')); + copy(prev.element(), td); + remove$1(td, 'height'); + if (prev.colspan() !== 1) { + remove$1(prev.element(), 'width'); + } + mutate(prev.element(), td); + return td; + }; + return { + row: newRow(doc), + cell: newCell, + replace: replace, + gap: createCell + }; + }; + var paste = function (doc) { + return { + row: newRow(doc), + cell: createCell, + replace: pasteReplace, + gap: createCell + }; + }; + var TableFill = { + cellOperations: cellOperations, + paste: paste + }; + + var fromHtml$1 = function (html, scope) { + var doc = scope || domGlobals.document; + var div = doc.createElement('div'); + div.innerHTML = html; + return children(Element.fromDom(div)); + }; + + var inSelection = function (bounds, detail) { + var leftEdge = detail.column(); + var rightEdge = detail.column() + detail.colspan() - 1; + var topEdge = detail.row(); + var bottomEdge = detail.row() + detail.rowspan() - 1; + return leftEdge <= bounds.finishCol() && rightEdge >= bounds.startCol() && (topEdge <= bounds.finishRow() && bottomEdge >= bounds.startRow()); + }; + var isWithin = function (bounds, detail) { + return detail.column() >= bounds.startCol() && detail.column() + detail.colspan() - 1 <= bounds.finishCol() && detail.row() >= bounds.startRow() && detail.row() + detail.rowspan() - 1 <= bounds.finishRow(); + }; + var isRectangular = function (warehouse, bounds) { + var isRect = true; + var detailIsWithin = curry(isWithin, bounds); + for (var i = bounds.startRow(); i <= bounds.finishRow(); i++) { + for (var j = bounds.startCol(); j <= bounds.finishCol(); j++) { + isRect = isRect && Warehouse.getAt(warehouse, i, j).exists(detailIsWithin); + } + } + return isRect ? Option.some(bounds) : Option.none(); + }; + var CellBounds = { + inSelection: inSelection, + isWithin: isWithin, + isRectangular: isRectangular + }; + + var getBounds = function (detailA, detailB) { + return bounds(Math.min(detailA.row(), detailB.row()), Math.min(detailA.column(), detailB.column()), Math.max(detailA.row() + detailA.rowspan() - 1, detailB.row() + detailB.rowspan() - 1), Math.max(detailA.column() + detailA.colspan() - 1, detailB.column() + detailB.colspan() - 1)); + }; + var getAnyBox = function (warehouse, startCell, finishCell) { + var startCoords = Warehouse.findItem(warehouse, startCell, eq); + var finishCoords = Warehouse.findItem(warehouse, finishCell, eq); + return startCoords.bind(function (sc) { + return finishCoords.map(function (fc) { + return getBounds(sc, fc); + }); + }); + }; + var getBox = function (warehouse, startCell, finishCell) { + return getAnyBox(warehouse, startCell, finishCell).bind(function (bounds) { + return CellBounds.isRectangular(warehouse, bounds); + }); + }; + var CellGroup = { + getAnyBox: getAnyBox, + getBox: getBox + }; + + var moveBy = function (warehouse, cell, row, column) { + return Warehouse.findItem(warehouse, cell, eq).bind(function (detail) { + var startRow = row > 0 ? detail.row() + detail.rowspan() - 1 : detail.row(); + var startCol = column > 0 ? detail.column() + detail.colspan() - 1 : detail.column(); + var dest = Warehouse.getAt(warehouse, startRow + row, startCol + column); + return dest.map(function (d) { + return d.element(); + }); + }); + }; + var intercepts = function (warehouse, start, finish) { + return CellGroup.getAnyBox(warehouse, start, finish).map(function (bounds) { + var inside = Warehouse.filterItems(warehouse, curry(CellBounds.inSelection, bounds)); + return map(inside, function (detail) { + return detail.element(); + }); + }); + }; + var parentCell = function (warehouse, innerCell) { + var isContainedBy = function (c1, c2) { + return contains$2(c2, c1); + }; + return Warehouse.findItem(warehouse, innerCell, isContainedBy).map(function (detail) { + return detail.element(); + }); + }; + var CellFinder = { + moveBy: moveBy, + intercepts: intercepts, + parentCell: parentCell + }; + + var moveBy$1 = function (cell, deltaRow, deltaColumn) { + return TableLookup.table(cell).bind(function (table) { + var warehouse = getWarehouse(table); + return CellFinder.moveBy(warehouse, cell, deltaRow, deltaColumn); + }); + }; + var intercepts$1 = function (table, first, last) { + var warehouse = getWarehouse(table); + return CellFinder.intercepts(warehouse, first, last); + }; + var nestedIntercepts = function (table, first, firstTable, last, lastTable) { + var warehouse = getWarehouse(table); + var optStartCell = eq(table, firstTable) ? Option.some(first) : CellFinder.parentCell(warehouse, first); + var optLastCell = eq(table, lastTable) ? Option.some(last) : CellFinder.parentCell(warehouse, last); + return optStartCell.bind(function (startCell) { + return optLastCell.bind(function (lastCell) { + return CellFinder.intercepts(warehouse, startCell, lastCell); + }); + }); + }; + var getBox$1 = function (table, first, last) { + var warehouse = getWarehouse(table); + return CellGroup.getBox(warehouse, first, last); + }; + var getWarehouse = function (table) { + var list = DetailsList.fromTable(table); + return Warehouse.generate(list); + }; + var TablePositions = { + moveBy: moveBy$1, + intercepts: intercepts$1, + nestedIntercepts: nestedIntercepts, + getBox: getBox$1 + }; + + var TagBoundaries = [ + 'body', + 'p', + 'div', + 'article', + 'aside', + 'figcaption', + 'figure', + 'footer', + 'header', + 'nav', + 'section', + 'ol', + 'ul', + 'li', + 'table', + 'thead', + 'tbody', + 'tfoot', + 'caption', + 'tr', + 'td', + 'th', + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'blockquote', + 'pre', + 'address' + ]; + + function DomUniverse () { + var clone$1 = function (element) { + return Element.fromDom(element.dom().cloneNode(false)); + }; + var document = function (element) { + return element.dom().ownerDocument; + }; + var isBoundary = function (element) { + if (!isElement(element)) { + return false; + } + if (name(element) === 'body') { + return true; + } + return contains(TagBoundaries, name(element)); + }; + var isEmptyTag = function (element) { + if (!isElement(element)) { + return false; + } + return contains([ + 'br', + 'img', + 'hr', + 'input' + ], name(element)); + }; + var comparePosition = function (element, other) { + return element.dom().compareDocumentPosition(other.dom()); + }; + var copyAttributesTo = function (source, destination) { + var as = clone(source); + setAll(destination, as); + }; + return { + up: constant({ + selector: ancestor$1, + closest: closest$1, + predicate: ancestor, + all: parents + }), + down: constant({ + selector: descendants$1, + predicate: descendants + }), + styles: constant({ + get: get$1, + getRaw: getRaw, + set: set$1, + remove: remove$1 + }), + attrs: constant({ + get: get, + set: set, + remove: remove, + copyTo: copyAttributesTo + }), + insert: constant({ + before: before, + after: after, + afterAll: after$1, + append: append, + appendAll: append$1, + prepend: prepend, + wrap: wrap + }), + remove: constant({ + unwrap: unwrap, + remove: remove$2 + }), + create: constant({ + nu: Element.fromTag, + clone: clone$1, + text: Element.fromText + }), + query: constant({ + comparePosition: comparePosition, + prevSibling: prevSibling, + nextSibling: nextSibling + }), + property: constant({ + children: children, + name: name, + parent: parent, + document: document, + isText: isText, + isComment: isComment, + isElement: isElement, + getText: get$2, + setText: set$2, + isBoundary: isBoundary, + isEmptyTag: isEmptyTag + }), + eq: eq, + is: is$1 + }; + } + + var leftRight = Immutable('left', 'right'); + var brokenPath = Immutable('first', 'second', 'splits'); + var bisect = function (universe, parent, child) { + var children = universe.property().children(parent); + var index = findIndex(children, curry(universe.eq, child)); + return index.map(function (ind) { + return { + before: constant(children.slice(0, ind)), + after: constant(children.slice(ind + 1)) + }; + }); + }; + var breakToRight = function (universe, parent, child) { + return bisect(universe, parent, child).map(function (parts) { + var second = universe.create().clone(parent); + universe.insert().appendAll(second, parts.after()); + universe.insert().after(parent, second); + return leftRight(parent, second); + }); + }; + var breakToLeft = function (universe, parent, child) { + return bisect(universe, parent, child).map(function (parts) { + var prior = universe.create().clone(parent); + universe.insert().appendAll(prior, parts.before().concat([child])); + universe.insert().appendAll(parent, parts.after()); + universe.insert().before(parent, prior); + return leftRight(prior, parent); + }); + }; + var breakPath = function (universe, item, isTop, breaker) { + var next = function (child, group, splits) { + var fallback = brokenPath(child, Option.none(), splits); + if (isTop(child)) { + return brokenPath(child, group, splits); + } else { + return universe.property().parent(child).bind(function (parent) { + return breaker(universe, parent, child).map(function (breakage) { + var extra = [{ + first: breakage.left, + second: breakage.right + }]; + var nextChild = isTop(parent) ? parent : breakage.left(); + return next(nextChild, Option.some(breakage.right()), splits.concat(extra)); + }); + }).getOr(fallback); + } + }; + return next(item, Option.none(), []); + }; + + var all$1 = function (universe, look, elements, f) { + var head = elements[0]; + var tail = elements.slice(1); + return f(universe, look, head, tail); + }; + var oneAll = function (universe, look, elements) { + return elements.length > 0 ? all$1(universe, look, elements, unsafeOne) : Option.none(); + }; + var unsafeOne = function (universe, look, head, tail) { + var start = look(universe, head); + return foldr(tail, function (b, a) { + var current = look(universe, a); + return commonElement(universe, b, current); + }, start); + }; + var commonElement = function (universe, start, end) { + return start.bind(function (s) { + return end.filter(curry(universe.eq, s)); + }); + }; + + var eq$1 = function (universe, item) { + return curry(universe.eq, item); + }; + var unsafeSubset = function (universe, common, ps1, ps2) { + var children = universe.property().children(common); + if (universe.eq(common, ps1[0])) { + return Option.some([ps1[0]]); + } + if (universe.eq(common, ps2[0])) { + return Option.some([ps2[0]]); + } + var finder = function (ps) { + var topDown = reverse(ps); + var index = findIndex(topDown, eq$1(universe, common)).getOr(-1); + var item = index < topDown.length - 1 ? topDown[index + 1] : topDown[index]; + return findIndex(children, eq$1(universe, item)); + }; + var startIndex = finder(ps1); + var endIndex = finder(ps2); + return startIndex.bind(function (sIndex) { + return endIndex.map(function (eIndex) { + var first = Math.min(sIndex, eIndex); + var last = Math.max(sIndex, eIndex); + return children.slice(first, last + 1); + }); + }); + }; + var ancestors$2 = function (universe, start, end, isRoot) { + if (isRoot === void 0) { + isRoot = never; + } + var ps1 = [start].concat(universe.up().all(start)); + var ps2 = [end].concat(universe.up().all(end)); + var prune = function (path) { + var index = findIndex(path, isRoot); + return index.fold(function () { + return path; + }, function (ind) { + return path.slice(0, ind + 1); + }); + }; + var pruned1 = prune(ps1); + var pruned2 = prune(ps2); + var shared = find(pruned1, function (x) { + return exists(pruned2, eq$1(universe, x)); + }); + return { + firstpath: constant(pruned1), + secondpath: constant(pruned2), + shared: constant(shared) + }; + }; + var subset = function (universe, start, end) { + var ancs = ancestors$2(universe, start, end); + return ancs.shared().bind(function (shared) { + return unsafeSubset(universe, shared, ancs.firstpath(), ancs.secondpath()); + }); + }; + var SubsetFn = { + subset: subset, + ancestors: ancestors$2 + }; + + var sharedOne = oneAll; + var subset$1 = SubsetFn.subset; + var ancestors$3 = SubsetFn.ancestors; + var breakToLeft$1 = breakToLeft; + var breakToRight$1 = breakToRight; + var breakPath$1 = breakPath; + var Parent = { + sharedOne: sharedOne, + subset: subset$1, + ancestors: ancestors$3, + breakToLeft: breakToLeft$1, + breakToRight: breakToRight$1, + breakPath: breakPath$1 + }; + + var universe = DomUniverse(); + var sharedOne$1 = function (look, elements) { + return Parent.sharedOne(universe, function (_universe, element) { + return look(element); + }, elements); + }; + var subset$2 = function (start, finish) { + return Parent.subset(universe, start, finish); + }; + var ancestors$4 = function (start, finish, isRoot) { + return Parent.ancestors(universe, start, finish, isRoot); + }; + var breakToLeft$2 = function (parent, child) { + return Parent.breakToLeft(universe, parent, child); + }; + var breakToRight$2 = function (parent, child) { + return Parent.breakToRight(universe, parent, child); + }; + var breakPath$2 = function (child, isTop, breaker) { + return Parent.breakPath(universe, child, isTop, function (u, p, c) { + return breaker(p, c); + }); + }; + var DomParent = { + sharedOne: sharedOne$1, + subset: subset$2, + ancestors: ancestors$4, + breakToLeft: breakToLeft$2, + breakToRight: breakToRight$2, + breakPath: breakPath$2 + }; + + var create = MixedBag([ + 'boxes', + 'start', + 'finish' + ], []); + var Identified = { create: create }; + + var lookupTable = function (container) { + return ancestor$1(container, 'table'); + }; + var identify = function (start, finish, isRoot) { + var getIsRoot = function (rootTable) { + return function (element) { + return isRoot !== undefined && isRoot(element) || eq(element, rootTable); + }; + }; + if (eq(start, finish)) { + return Option.some(Identified.create({ + boxes: Option.some([start]), + start: start, + finish: finish + })); + } else { + return lookupTable(start).bind(function (startTable) { + return lookupTable(finish).bind(function (finishTable) { + if (eq(startTable, finishTable)) { + return Option.some(Identified.create({ + boxes: TablePositions.intercepts(startTable, start, finish), + start: start, + finish: finish + })); + } else if (contains$2(startTable, finishTable)) { + var ancestorCells = ancestors$1(finish, 'td,th', getIsRoot(startTable)); + var finishCell = ancestorCells.length > 0 ? ancestorCells[ancestorCells.length - 1] : finish; + return Option.some(Identified.create({ + boxes: TablePositions.nestedIntercepts(startTable, start, startTable, finish, finishTable), + start: start, + finish: finishCell + })); + } else if (contains$2(finishTable, startTable)) { + var ancestorCells = ancestors$1(start, 'td,th', getIsRoot(finishTable)); + var startCell = ancestorCells.length > 0 ? ancestorCells[ancestorCells.length - 1] : start; + return Option.some(Identified.create({ + boxes: TablePositions.nestedIntercepts(finishTable, start, startTable, finish, finishTable), + start: start, + finish: startCell + })); + } else { + return DomParent.ancestors(start, finish).shared().bind(function (lca) { + return closest$1(lca, 'table', isRoot).bind(function (lcaTable) { + var finishAncestorCells = ancestors$1(finish, 'td,th', getIsRoot(lcaTable)); + var finishCell = finishAncestorCells.length > 0 ? finishAncestorCells[finishAncestorCells.length - 1] : finish; + var startAncestorCells = ancestors$1(start, 'td,th', getIsRoot(lcaTable)); + var startCell = startAncestorCells.length > 0 ? startAncestorCells[startAncestorCells.length - 1] : start; + return Option.some(Identified.create({ + boxes: TablePositions.nestedIntercepts(lcaTable, start, startTable, finish, finishTable), + start: startCell, + finish: finishCell + })); + }); + }); + } + }); + }); + } + }; + var retrieve = function (container, selector) { + var sels = descendants$1(container, selector); + return sels.length > 0 ? Option.some(sels) : Option.none(); + }; + var getLast = function (boxes, lastSelectedSelector) { + return find(boxes, function (box) { + return is(box, lastSelectedSelector); + }); + }; + var getEdges = function (container, firstSelectedSelector, lastSelectedSelector) { + return descendant$1(container, firstSelectedSelector).bind(function (first) { + return descendant$1(container, lastSelectedSelector).bind(function (last) { + return DomParent.sharedOne(lookupTable, [ + first, + last + ]).map(function (tbl) { + return { + first: constant(first), + last: constant(last), + table: constant(tbl) + }; + }); + }); + }); + }; + var expandTo = function (finish, firstSelectedSelector) { + return ancestor$1(finish, 'table').bind(function (table) { + return descendant$1(table, firstSelectedSelector).bind(function (start) { + return identify(start, finish).bind(function (identified) { + return identified.boxes().map(function (boxes) { + return { + boxes: constant(boxes), + start: constant(identified.start()), + finish: constant(identified.finish()) + }; + }); + }); + }); + }); + }; + var shiftSelection = function (boxes, deltaRow, deltaColumn, firstSelectedSelector, lastSelectedSelector) { + return getLast(boxes, lastSelectedSelector).bind(function (last) { + return TablePositions.moveBy(last, deltaRow, deltaColumn).bind(function (finish) { + return expandTo(finish, firstSelectedSelector); + }); + }); + }; + var CellSelection = { + identify: identify, + retrieve: retrieve, + shiftSelection: shiftSelection, + getEdges: getEdges + }; + + var retrieve$1 = function (container, selector) { + return CellSelection.retrieve(container, selector); + }; + var retrieveBox = function (container, firstSelectedSelector, lastSelectedSelector) { + return CellSelection.getEdges(container, firstSelectedSelector, lastSelectedSelector).bind(function (edges) { + var isRoot = function (ancestor) { + return eq(container, ancestor); + }; + var firstAncestor = ancestor$1(edges.first(), 'thead,tfoot,tbody,table', isRoot); + var lastAncestor = ancestor$1(edges.last(), 'thead,tfoot,tbody,table', isRoot); + return firstAncestor.bind(function (fA) { + return lastAncestor.bind(function (lA) { + return eq(fA, lA) ? TablePositions.getBox(edges.table(), edges.first(), edges.last()) : Option.none(); + }); + }); + }); + }; + var TableSelection = { + retrieve: retrieve$1, + retrieveBox: retrieveBox + }; + + var selected = 'data-mce-selected'; + var selectedSelector = 'td[' + selected + '],th[' + selected + ']'; + var attributeSelector = '[' + selected + ']'; + var firstSelected = 'data-mce-first-selected'; + var firstSelectedSelector = 'td[' + firstSelected + '],th[' + firstSelected + ']'; + var lastSelected = 'data-mce-last-selected'; + var lastSelectedSelector = 'td[' + lastSelected + '],th[' + lastSelected + ']'; + var Ephemera = { + selected: constant(selected), + selectedSelector: constant(selectedSelector), + attributeSelector: constant(attributeSelector), + firstSelected: constant(firstSelected), + firstSelectedSelector: constant(firstSelectedSelector), + lastSelected: constant(lastSelected), + lastSelectedSelector: constant(lastSelectedSelector) + }; + + var generate$1 = function (cases) { + if (!isArray(cases)) { + throw new Error('cases must be an array'); + } + if (cases.length === 0) { + throw new Error('there must be at least one case'); + } + var constructors = []; + var adt = {}; + each(cases, function (acase, count) { + var keys$1 = keys(acase); + if (keys$1.length !== 1) { + throw new Error('one and only one name per case'); + } + var key = keys$1[0]; + var value = acase[key]; + if (adt[key] !== undefined) { + throw new Error('duplicate key detected:' + key); + } else if (key === 'cata') { + throw new Error('cannot have a case named cata (sorry)'); + } else if (!isArray(value)) { + throw new Error('case arguments must be an array'); + } + constructors.push(key); + adt[key] = function () { + var argLength = arguments.length; + if (argLength !== value.length) { + throw new Error('Wrong number of arguments to case ' + key + '. Expected ' + value.length + ' (' + value + '), got ' + argLength); + } + var args = new Array(argLength); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + var match = function (branches) { + var branchKeys = keys(branches); + if (constructors.length !== branchKeys.length) { + throw new Error('Wrong number of arguments to match. Expected: ' + constructors.join(',') + '\nActual: ' + branchKeys.join(',')); + } + var allReqd = forall(constructors, function (reqKey) { + return contains(branchKeys, reqKey); + }); + if (!allReqd) { + throw new Error('Not all branches were specified when using match. Specified: ' + branchKeys.join(', ') + '\nRequired: ' + constructors.join(', ')); + } + return branches[key].apply(null, args); + }; + return { + fold: function () { + if (arguments.length !== cases.length) { + throw new Error('Wrong number of arguments to fold. Expected ' + cases.length + ', got ' + arguments.length); + } + var target = arguments[count]; + return target.apply(null, args); + }, + match: match, + log: function (label) { + domGlobals.console.log(label, { + constructors: constructors, + constructor: key, + params: args + }); + } + }; + }; + }); + return adt; + }; + var Adt = { generate: generate$1 }; + + var type$1 = Adt.generate([ + { none: [] }, + { multiple: ['elements'] }, + { single: ['selection'] } + ]); + var cata = function (subject, onNone, onMultiple, onSingle) { + return subject.fold(onNone, onMultiple, onSingle); + }; + var SelectionTypes = { + cata: cata, + none: type$1.none, + multiple: type$1.multiple, + single: type$1.single + }; + + var selection = function (cell, selections) { + return SelectionTypes.cata(selections.get(), constant([]), identity, constant([cell])); + }; + var unmergable = function (cell, selections) { + var hasSpan = function (elem) { + return has(elem, 'rowspan') && parseInt(get(elem, 'rowspan'), 10) > 1 || has(elem, 'colspan') && parseInt(get(elem, 'colspan'), 10) > 1; + }; + var candidates = selection(cell, selections); + return candidates.length > 0 && forall(candidates, hasSpan) ? Option.some(candidates) : Option.none(); + }; + var mergable = function (table, selections) { + return SelectionTypes.cata(selections.get(), Option.none, function (cells, _env) { + if (cells.length === 0) { + return Option.none(); + } + return TableSelection.retrieveBox(table, Ephemera.firstSelectedSelector(), Ephemera.lastSelectedSelector()).bind(function (bounds) { + return cells.length > 1 ? Option.some({ + bounds: constant(bounds), + cells: constant(cells) + }) : Option.none(); + }); + }, Option.none); + }; + var CellOperations = { + mergable: mergable, + unmergable: unmergable, + selection: selection + }; + + var noMenu = function (cell) { + return { + element: constant(cell), + mergable: Option.none, + unmergable: Option.none, + selection: constant([cell]) + }; + }; + var forMenu = function (selections, table, cell) { + return { + element: constant(cell), + mergable: constant(CellOperations.mergable(table, selections)), + unmergable: constant(CellOperations.unmergable(cell, selections)), + selection: constant(CellOperations.selection(cell, selections)) + }; + }; + var notCell$1 = function (element) { + return noMenu(element); + }; + var paste$1 = Immutable('element', 'clipboard', 'generators'); + var pasteRows = function (selections, table, cell, clipboard, generators) { + return { + element: constant(cell), + mergable: Option.none, + unmergable: Option.none, + selection: constant(CellOperations.selection(cell, selections)), + clipboard: constant(clipboard), + generators: constant(generators) + }; + }; + var TableTargets = { + noMenu: noMenu, + forMenu: forMenu, + notCell: notCell$1, + paste: paste$1, + pasteRows: pasteRows + }; + + var extractSelected = function (cells) { + return TableLookup.table(cells[0]).map(deep).map(function (replica) { + return [CopySelected.extract(replica, Ephemera.attributeSelector())]; + }); + }; + var serializeElements = function (editor, elements) { + return map(elements, function (elm) { + return editor.selection.serializer.serialize(elm.dom(), {}); + }).join(''); + }; + var getTextContent = function (elements) { + return map(elements, function (element) { + return element.dom().innerText; + }).join(''); + }; + var registerEvents = function (editor, selections, actions, cellSelection) { + editor.on('BeforeGetContent', function (e) { + var multiCellContext = function (cells) { + e.preventDefault(); + extractSelected(cells).each(function (elements) { + e.content = e.format === 'text' ? getTextContent(elements) : serializeElements(editor, elements); + }); + }; + if (e.selection === true) { + SelectionTypes.cata(selections.get(), noop, multiCellContext, noop); + } + }); + editor.on('BeforeSetContent', function (e) { + if (e.selection === true && e.paste === true) { + var cellOpt = Option.from(editor.dom.getParent(editor.selection.getStart(), 'th,td')); + cellOpt.each(function (domCell) { + var cell = Element.fromDom(domCell); + TableLookup.table(cell).each(function (table) { + var elements = filter(fromHtml$1(e.content), function (content) { + return name(content) !== 'meta'; + }); + if (elements.length === 1 && name(elements[0]) === 'table') { + e.preventDefault(); + var doc = Element.fromDom(editor.getDoc()); + var generators = TableFill.paste(doc); + var targets = TableTargets.paste(cell, elements[0], generators); + actions.pasteCells(table, targets).each(function (rng) { + editor.selection.setRng(rng); + editor.focus(); + cellSelection.clear(table); + }); + } + }); + }); + } + }); + }; + var Clipboard = { registerEvents: registerEvents }; + + function Dimension (name, getOffset) { + var set = function (element, h) { + if (!isNumber(h) && !h.match(/^[0-9]+$/)) { + throw new Error(name + '.set accepts only positive integer values. Value was ' + h); + } + var dom = element.dom(); + if (isSupported(dom)) { + dom.style[name] = h + 'px'; + } + }; + var get = function (element) { + var r = getOffset(element); + if (r <= 0 || r === null) { + var css = get$1(element, name); + return parseFloat(css) || 0; + } + return r; + }; + var getOuter = get; + var aggregate = function (element, properties) { + return foldl(properties, function (acc, property) { + var val = get$1(element, property); + var value = val === undefined ? 0 : parseInt(val, 10); + return isNaN(value) ? acc : acc + value; + }, 0); + }; + var max = function (element, value, properties) { + var cumulativeInclusions = aggregate(element, properties); + var absoluteMax = value > cumulativeInclusions ? value - cumulativeInclusions : 0; + return absoluteMax; + }; + return { + set: set, + get: get, + getOuter: getOuter, + aggregate: aggregate, + max: max + }; + } + + var api$1 = Dimension('height', function (element) { + var dom = element.dom(); + return inBody(element) ? dom.getBoundingClientRect().height : dom.offsetHeight; + }); + var get$3 = function (element) { + return api$1.get(element); + }; + var getOuter = function (element) { + return api$1.getOuter(element); + }; + + var api$2 = Dimension('width', function (element) { + return element.dom().offsetWidth; + }); + var get$4 = function (element) { + return api$2.get(element); + }; + var getOuter$1 = function (element) { + return api$2.getOuter(element); + }; + + var platform = PlatformDetection$1.detect(); + var needManualCalc = function () { + return platform.browser.isIE() || platform.browser.isEdge(); + }; + var toNumber = function (px, fallback) { + var num = parseFloat(px); + return isNaN(num) ? fallback : num; + }; + var getProp = function (elm, name, fallback) { + return toNumber(get$1(elm, name), fallback); + }; + var getCalculatedHeight = function (cell) { + var paddingTop = getProp(cell, 'padding-top', 0); + var paddingBottom = getProp(cell, 'padding-bottom', 0); + var borderTop = getProp(cell, 'border-top-width', 0); + var borderBottom = getProp(cell, 'border-bottom-width', 0); + var height = cell.dom().getBoundingClientRect().height; + var boxSizing = get$1(cell, 'box-sizing'); + var borders = borderTop + borderBottom; + return boxSizing === 'border-box' ? height : height - paddingTop - paddingBottom - borders; + }; + var getWidth = function (cell) { + return getProp(cell, 'width', get$4(cell)); + }; + var getHeight = function (cell) { + return needManualCalc() ? getCalculatedHeight(cell) : getProp(cell, 'height', get$3(cell)); + }; + var RuntimeSize = { + getWidth: getWidth, + getHeight: getHeight + }; + + var genericSizeRegex = /(\d+(\.\d+)?)(\w|%)*/; + var percentageBasedSizeRegex = /(\d+(\.\d+)?)%/; + var pixelBasedSizeRegex = /(\d+(\.\d+)?)px|em/; + var setPixelWidth = function (cell, amount) { + set$1(cell, 'width', amount + 'px'); + }; + var setPercentageWidth = function (cell, amount) { + set$1(cell, 'width', amount + '%'); + }; + var setHeight = function (cell, amount) { + set$1(cell, 'height', amount + 'px'); + }; + var getHeightValue = function (cell) { + return getRaw(cell, 'height').getOrThunk(function () { + return RuntimeSize.getHeight(cell) + 'px'; + }); + }; + var convert = function (cell, number, getter, setter) { + var newSize = TableLookup.table(cell).map(function (table) { + var total = getter(table); + return Math.floor(number / 100 * total); + }).getOr(number); + setter(cell, newSize); + return newSize; + }; + var normalizePixelSize = function (value, cell, getter, setter) { + var number = parseInt(value, 10); + return endsWith(value, '%') && name(cell) !== 'table' ? convert(cell, number, getter, setter) : number; + }; + var getTotalHeight = function (cell) { + var value = getHeightValue(cell); + if (!value) { + return get$3(cell); + } + return normalizePixelSize(value, cell, get$3, setHeight); + }; + var get$5 = function (cell, type, f) { + var v = f(cell); + var span = getSpan(cell, type); + return v / span; + }; + var getSpan = function (cell, type) { + return has(cell, type) ? parseInt(get(cell, type), 10) : 1; + }; + var getRawWidth = function (element) { + var cssWidth = getRaw(element, 'width'); + return cssWidth.fold(function () { + return Option.from(get(element, 'width')); + }, function (width) { + return Option.some(width); + }); + }; + var normalizePercentageWidth = function (cellWidth, tableSize) { + return cellWidth / tableSize.pixelWidth() * 100; + }; + var choosePercentageSize = function (element, width, tableSize) { + var percentMatch = percentageBasedSizeRegex.exec(width); + if (percentMatch !== null) { + return parseFloat(percentMatch[1]); + } else { + var intWidth = get$4(element); + return normalizePercentageWidth(intWidth, tableSize); + } + }; + var getPercentageWidth = function (cell, tableSize) { + var width = getRawWidth(cell); + return width.fold(function () { + var intWidth = get$4(cell); + return normalizePercentageWidth(intWidth, tableSize); + }, function (w) { + return choosePercentageSize(cell, w, tableSize); + }); + }; + var normalizePixelWidth = function (cellWidth, tableSize) { + return cellWidth / 100 * tableSize.pixelWidth(); + }; + var choosePixelSize = function (element, width, tableSize) { + var pixelMatch = pixelBasedSizeRegex.exec(width); + if (pixelMatch !== null) { + return parseInt(pixelMatch[1], 10); + } + var percentMatch = percentageBasedSizeRegex.exec(width); + if (percentMatch !== null) { + var floatWidth = parseFloat(percentMatch[1]); + return normalizePixelWidth(floatWidth, tableSize); + } + return get$4(element); + }; + var getPixelWidth = function (cell, tableSize) { + var width = getRawWidth(cell); + return width.fold(function () { + return get$4(cell); + }, function (w) { + return choosePixelSize(cell, w, tableSize); + }); + }; + var getHeight$1 = function (cell) { + return get$5(cell, 'rowspan', getTotalHeight); + }; + var getGenericWidth = function (cell) { + var width = getRawWidth(cell); + return width.bind(function (w) { + var match = genericSizeRegex.exec(w); + if (match !== null) { + return Option.some({ + width: constant(parseFloat(match[1])), + unit: constant(match[3]) + }); + } else { + return Option.none(); + } + }); + }; + var setGenericWidth = function (cell, amount, unit) { + set$1(cell, 'width', amount + unit); + }; + var Sizes = { + percentageBasedSizeRegex: constant(percentageBasedSizeRegex), + pixelBasedSizeRegex: constant(pixelBasedSizeRegex), + setPixelWidth: setPixelWidth, + setPercentageWidth: setPercentageWidth, + setHeight: setHeight, + getPixelWidth: getPixelWidth, + getPercentageWidth: getPercentageWidth, + getGenericWidth: getGenericWidth, + setGenericWidth: setGenericWidth, + getHeight: getHeight$1, + getRawWidth: getRawWidth + }; + + var halve = function (main, other) { + var width = Sizes.getGenericWidth(main); + width.each(function (w) { + var newWidth = w.width() / 2; + Sizes.setGenericWidth(main, newWidth, w.unit()); + Sizes.setGenericWidth(other, newWidth, w.unit()); + }); + }; + var CellMutations = { halve: halve }; + + var r = function (left, top) { + var translate = function (x, y) { + return r(left + x, top + y); + }; + return { + left: constant(left), + top: constant(top), + translate: translate + }; + }; + var Position = r; + + var boxPosition = function (dom) { + var box = dom.getBoundingClientRect(); + return Position(box.left, box.top); + }; + var firstDefinedOrZero = function (a, b) { + return a !== undefined ? a : b !== undefined ? b : 0; + }; + var absolute = function (element) { + var doc = element.dom().ownerDocument; + var body = doc.body; + var win = doc.defaultView; + var html = doc.documentElement; + var scrollTop = firstDefinedOrZero(win.pageYOffset, html.scrollTop); + var scrollLeft = firstDefinedOrZero(win.pageXOffset, html.scrollLeft); + var clientTop = firstDefinedOrZero(html.clientTop, body.clientTop); + var clientLeft = firstDefinedOrZero(html.clientLeft, body.clientLeft); + return viewport(element).translate(scrollLeft - clientLeft, scrollTop - clientTop); + }; + var viewport = function (element) { + var dom = element.dom(); + var doc = dom.ownerDocument; + var body = doc.body; + if (body === dom) { + return Position(body.offsetLeft, body.offsetTop); + } + if (!inBody(element)) { + return Position(0, 0); + } + return boxPosition(dom); + }; + + var rowInfo = Immutable('row', 'y'); + var colInfo = Immutable('col', 'x'); + var rtlEdge = function (cell) { + var pos = absolute(cell); + return pos.left() + getOuter$1(cell); + }; + var ltrEdge = function (cell) { + return absolute(cell).left(); + }; + var getLeftEdge = function (index, cell) { + return colInfo(index, ltrEdge(cell)); + }; + var getRightEdge = function (index, cell) { + return colInfo(index, rtlEdge(cell)); + }; + var getTop = function (cell) { + return absolute(cell).top(); + }; + var getTopEdge = function (index, cell) { + return rowInfo(index, getTop(cell)); + }; + var getBottomEdge = function (index, cell) { + return rowInfo(index, getTop(cell) + getOuter(cell)); + }; + var findPositions = function (getInnerEdge, getOuterEdge, array) { + if (array.length === 0) { + return []; + } + var lines = map(array.slice(1), function (cellOption, index) { + return cellOption.map(function (cell) { + return getInnerEdge(index, cell); + }); + }); + var lastLine = array[array.length - 1].map(function (cell) { + return getOuterEdge(array.length - 1, cell); + }); + return lines.concat([lastLine]); + }; + var negate = function (step) { + return -step; + }; + var height = { + delta: identity, + positions: function (optElements) { + return findPositions(getTopEdge, getBottomEdge, optElements); + }, + edge: getTop + }; + var ltr = { + delta: identity, + edge: ltrEdge, + positions: function (optElements) { + return findPositions(getLeftEdge, getRightEdge, optElements); + } + }; + var rtl = { + delta: negate, + edge: rtlEdge, + positions: function (optElements) { + return findPositions(getRightEdge, getLeftEdge, optElements); + } + }; + var BarPositions = { + height: height, + rtl: rtl, + ltr: ltr + }; + + var ResizeDirection = { + ltr: BarPositions.ltr, + rtl: BarPositions.rtl + }; + + function TableDirection (directionAt) { + var auto = function (table) { + return directionAt(table).isRtl() ? ResizeDirection.rtl : ResizeDirection.ltr; + }; + var delta = function (amount, table) { + return auto(table).delta(amount, table); + }; + var positions = function (cols, table) { + return auto(table).positions(cols, table); + }; + var edge = function (cell) { + return auto(cell).edge(cell); + }; + return { + delta: delta, + edge: edge, + positions: positions + }; + } + + var getGridSize = function (table) { + var input = DetailsList.fromTable(table); + var warehouse = Warehouse.generate(input); + return warehouse.grid(); + }; + var TableGridSize = { getGridSize: getGridSize }; + + var __assign = function () { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) + if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + + var cat = function (arr) { + var r = []; + var push = function (x) { + r.push(x); + }; + for (var i = 0; i < arr.length; i++) { + arr[i].each(push); + } + return r; + }; + var findMap = function (arr, f) { + for (var i = 0; i < arr.length; i++) { + var r = f(arr[i], i); + if (r.isSome()) { + return r; + } + } + return Option.none(); + }; + + var setIfNot = function (element, property, value, ignore) { + if (value === ignore) { + remove(element, property); + } else { + set(element, property, value); + } + }; + var render = function (table, grid) { + var newRows = []; + var newCells = []; + var renderSection = function (gridSection, sectionName) { + var section = child$2(table, sectionName).getOrThunk(function () { + var tb = Element.fromTag(sectionName, owner(table).dom()); + append(table, tb); + return tb; + }); + empty(section); + var rows = map(gridSection, function (row) { + if (row.isNew()) { + newRows.push(row.element()); + } + var tr = row.element(); + empty(tr); + each(row.cells(), function (cell) { + if (cell.isNew()) { + newCells.push(cell.element()); + } + setIfNot(cell.element(), 'colspan', cell.colspan(), 1); + setIfNot(cell.element(), 'rowspan', cell.rowspan(), 1); + append(tr, cell.element()); + }); + return tr; + }); + append$1(section, rows); + }; + var removeSection = function (sectionName) { + child$2(table, sectionName).each(remove$2); + }; + var renderOrRemoveSection = function (gridSection, sectionName) { + if (gridSection.length > 0) { + renderSection(gridSection, sectionName); + } else { + removeSection(sectionName); + } + }; + var headSection = []; + var bodySection = []; + var footSection = []; + each(grid, function (row) { + switch (row.section()) { + case 'thead': + headSection.push(row); + break; + case 'tbody': + bodySection.push(row); + break; + case 'tfoot': + footSection.push(row); + break; + } + }); + renderOrRemoveSection(headSection, 'thead'); + renderOrRemoveSection(bodySection, 'tbody'); + renderOrRemoveSection(footSection, 'tfoot'); + return { + newRows: constant(newRows), + newCells: constant(newCells) + }; + }; + var copy$2 = function (grid) { + var rows = map(grid, function (row) { + var tr = shallow(row.element()); + each(row.cells(), function (cell) { + var clonedCell = deep(cell.element()); + setIfNot(clonedCell, 'colspan', cell.colspan(), 1); + setIfNot(clonedCell, 'rowspan', cell.rowspan(), 1); + append(tr, clonedCell); + }); + return tr; + }); + return rows; + }; + var Redraw = { + render: render, + copy: copy$2 + }; + + var read = function (element, attr) { + var value = get(element, attr); + return value === undefined || value === '' ? [] : value.split(' '); + }; + var add = function (element, attr, id) { + var old = read(element, attr); + var nu = old.concat([id]); + set(element, attr, nu.join(' ')); + return true; + }; + var remove$3 = function (element, attr, id) { + var nu = filter(read(element, attr), function (v) { + return v !== id; + }); + if (nu.length > 0) { + set(element, attr, nu.join(' ')); + } else { + remove(element, attr); + } + return false; + }; + + var supports = function (element) { + return element.dom().classList !== undefined; + }; + var get$6 = function (element) { + return read(element, 'class'); + }; + var add$1 = function (element, clazz) { + return add(element, 'class', clazz); + }; + var remove$4 = function (element, clazz) { + return remove$3(element, 'class', clazz); + }; + + var add$2 = function (element, clazz) { + if (supports(element)) { + element.dom().classList.add(clazz); + } else { + add$1(element, clazz); + } + }; + var cleanClass = function (element) { + var classList = supports(element) ? element.dom().classList : get$6(element); + if (classList.length === 0) { + remove(element, 'class'); + } + }; + var remove$5 = function (element, clazz) { + if (supports(element)) { + var classList = element.dom().classList; + classList.remove(clazz); + } else { + remove$4(element, clazz); + } + cleanClass(element); + }; + var has$1 = function (element, clazz) { + return supports(element) && element.dom().classList.contains(clazz); + }; + + var repeat = function (repititions, f) { + var r = []; + for (var i = 0; i < repititions; i++) { + r.push(f(i)); + } + return r; + }; + var range = function (start, end) { + var r = []; + for (var i = start; i < end; i++) { + r.push(i); + } + return r; + }; + var deduce = function (xs, index) { + if (index < 0 || index >= xs.length - 1) { + return Option.none(); + } + var current = xs[index].fold(function () { + var rest = reverse(xs.slice(0, index)); + return findMap(rest, function (a, i) { + return a.map(function (aa) { + return { + value: aa, + delta: i + 1 + }; + }); + }); + }, function (c) { + return Option.some({ + value: c, + delta: 0 + }); + }); + var next = xs[index + 1].fold(function () { + var rest = xs.slice(index + 1); + return findMap(rest, function (a, i) { + return a.map(function (aa) { + return { + value: aa, + delta: i + 1 + }; + }); + }); + }, function (n) { + return Option.some({ + value: n, + delta: 1 + }); + }); + return current.bind(function (c) { + return next.map(function (n) { + var extras = n.delta + c.delta; + return Math.abs(n.value - c.value) / extras; + }); + }); + }; + + var columns = function (warehouse) { + var grid = warehouse.grid(); + var cols = range(0, grid.columns()); + var rowsArr = range(0, grid.rows()); + return map(cols, function (col) { + var getBlock = function () { + return bind(rowsArr, function (r) { + return Warehouse.getAt(warehouse, r, col).filter(function (detail) { + return detail.column() === col; + }).fold(constant([]), function (detail) { + return [detail]; + }); + }); + }; + var isSingle = function (detail) { + return detail.colspan() === 1; + }; + var getFallback = function () { + return Warehouse.getAt(warehouse, 0, col); + }; + return decide(getBlock, isSingle, getFallback); + }); + }; + var decide = function (getBlock, isSingle, getFallback) { + var inBlock = getBlock(); + var singleInBlock = find(inBlock, isSingle); + var detailOption = singleInBlock.orThunk(function () { + return Option.from(inBlock[0]).orThunk(getFallback); + }); + return detailOption.map(function (detail) { + return detail.element(); + }); + }; + var rows$1 = function (warehouse) { + var grid = warehouse.grid(); + var rowsArr = range(0, grid.rows()); + var cols = range(0, grid.columns()); + return map(rowsArr, function (row) { + var getBlock = function () { + return bind(cols, function (c) { + return Warehouse.getAt(warehouse, row, c).filter(function (detail) { + return detail.row() === row; + }).fold(constant([]), function (detail) { + return [detail]; + }); + }); + }; + var isSingle = function (detail) { + return detail.rowspan() === 1; + }; + var getFallback = function () { + return Warehouse.getAt(warehouse, row, 0); + }; + return decide(getBlock, isSingle, getFallback); + }); + }; + var Blocks = { + columns: columns, + rows: rows$1 + }; + + var css = function (namespace) { + var dashNamespace = namespace.replace(/\./g, '-'); + var resolve = function (str) { + return dashNamespace + '-' + str; + }; + return { resolve: resolve }; + }; + + var styles = css('ephox-snooker'); + var Styles = { resolve: styles.resolve }; + + var col = function (column, x, y, w, h) { + var blocker = Element.fromTag('div'); + setAll$1(blocker, { + position: 'absolute', + left: x - w / 2 + 'px', + top: y + 'px', + height: h + 'px', + width: w + 'px' + }); + setAll(blocker, { + 'data-column': column, + 'role': 'presentation' + }); + return blocker; + }; + var row$1 = function (r, x, y, w, h) { + var blocker = Element.fromTag('div'); + setAll$1(blocker, { + position: 'absolute', + left: x + 'px', + top: y - h / 2 + 'px', + height: h + 'px', + width: w + 'px' + }); + setAll(blocker, { + 'data-row': r, + 'role': 'presentation' + }); + return blocker; + }; + var Bar = { + col: col, + row: row$1 + }; + + var resizeBar = Styles.resolve('resizer-bar'); + var resizeRowBar = Styles.resolve('resizer-rows'); + var resizeColBar = Styles.resolve('resizer-cols'); + var BAR_THICKNESS = 7; + var destroy = function (wire) { + var previous = descendants$1(wire.parent(), '.' + resizeBar); + each(previous, remove$2); + }; + var drawBar = function (wire, positions, create) { + var origin = wire.origin(); + each(positions, function (cpOption, i) { + cpOption.each(function (cp) { + var bar = create(origin, cp); + add$2(bar, resizeBar); + append(wire.parent(), bar); + }); + }); + }; + var refreshCol = function (wire, colPositions, position, tableHeight) { + drawBar(wire, colPositions, function (origin, cp) { + var colBar = Bar.col(cp.col(), cp.x() - origin.left(), position.top() - origin.top(), BAR_THICKNESS, tableHeight); + add$2(colBar, resizeColBar); + return colBar; + }); + }; + var refreshRow = function (wire, rowPositions, position, tableWidth) { + drawBar(wire, rowPositions, function (origin, cp) { + var rowBar = Bar.row(cp.row(), position.left() - origin.left(), cp.y() - origin.top(), tableWidth, BAR_THICKNESS); + add$2(rowBar, resizeRowBar); + return rowBar; + }); + }; + var refreshGrid = function (wire, table, rows, cols, hdirection, vdirection) { + var position = absolute(table); + var rowPositions = rows.length > 0 ? hdirection.positions(rows, table) : []; + refreshRow(wire, rowPositions, position, getOuter$1(table)); + var colPositions = cols.length > 0 ? vdirection.positions(cols, table) : []; + refreshCol(wire, colPositions, position, getOuter(table)); + }; + var refresh = function (wire, table, hdirection, vdirection) { + destroy(wire); + var list = DetailsList.fromTable(table); + var warehouse = Warehouse.generate(list); + var rows = Blocks.rows(warehouse); + var cols = Blocks.columns(warehouse); + refreshGrid(wire, table, rows, cols, hdirection, vdirection); + }; + var each$2 = function (wire, f) { + var bars = descendants$1(wire.parent(), '.' + resizeBar); + each(bars, f); + }; + var hide = function (wire) { + each$2(wire, function (bar) { + set$1(bar, 'display', 'none'); + }); + }; + var show = function (wire) { + each$2(wire, function (bar) { + set$1(bar, 'display', 'block'); + }); + }; + var isRowBar = function (element) { + return has$1(element, resizeRowBar); + }; + var isColBar = function (element) { + return has$1(element, resizeColBar); + }; + var Bars = { + refresh: refresh, + hide: hide, + show: show, + destroy: destroy, + isRowBar: isRowBar, + isColBar: isColBar + }; + + var addCell = function (gridRow, index, cell) { + var cells = gridRow.cells(); + var before = cells.slice(0, index); + var after = cells.slice(index); + var newCells = before.concat([cell]).concat(after); + return setCells(gridRow, newCells); + }; + var mutateCell = function (gridRow, index, cell) { + var cells = gridRow.cells(); + cells[index] = cell; + }; + var setCells = function (gridRow, cells) { + return rowcells(cells, gridRow.section()); + }; + var mapCells = function (gridRow, f) { + var cells = gridRow.cells(); + var r = map(cells, f); + return rowcells(r, gridRow.section()); + }; + var getCell = function (gridRow, index) { + return gridRow.cells()[index]; + }; + var getCellElement = function (gridRow, index) { + return getCell(gridRow, index).element(); + }; + var cellLength = function (gridRow) { + return gridRow.cells().length; + }; + var GridRow = { + addCell: addCell, + setCells: setCells, + mutateCell: mutateCell, + getCell: getCell, + getCellElement: getCellElement, + mapCells: mapCells, + cellLength: cellLength + }; + + var getColumn = function (grid, index) { + return map(grid, function (row) { + return GridRow.getCell(row, index); + }); + }; + var getRow = function (grid, index) { + return grid[index]; + }; + var findDiff = function (xs, comp) { + if (xs.length === 0) { + return 0; + } + var first = xs[0]; + var index = findIndex(xs, function (x) { + return !comp(first.element(), x.element()); + }); + return index.fold(function () { + return xs.length; + }, function (ind) { + return ind; + }); + }; + var subgrid = function (grid, row, column, comparator) { + var restOfRow = getRow(grid, row).cells().slice(column); + var endColIndex = findDiff(restOfRow, comparator); + var restOfColumn = getColumn(grid, column).slice(row); + var endRowIndex = findDiff(restOfColumn, comparator); + return { + colspan: constant(endColIndex), + rowspan: constant(endRowIndex) + }; + }; + var TableGrid = { subgrid: subgrid }; + + var toDetails = function (grid, comparator) { + var seen = map(grid, function (row, ri) { + return map(row.cells(), function (col, ci) { + return false; + }); + }); + var updateSeen = function (ri, ci, rowspan, colspan) { + for (var r = ri; r < ri + rowspan; r++) { + for (var c = ci; c < ci + colspan; c++) { + seen[r][c] = true; + } + } + }; + return map(grid, function (row, ri) { + var details = bind(row.cells(), function (cell, ci) { + if (seen[ri][ci] === false) { + var result = TableGrid.subgrid(grid, ri, ci, comparator); + updateSeen(ri, ci, result.rowspan(), result.colspan()); + return [detailnew(cell.element(), result.rowspan(), result.colspan(), cell.isNew())]; + } else { + return []; + } + }); + return rowdetails(details, row.section()); + }); + }; + var toGrid = function (warehouse, generators, isNew) { + var grid = []; + for (var i = 0; i < warehouse.grid().rows(); i++) { + var rowCells = []; + for (var j = 0; j < warehouse.grid().columns(); j++) { + var element = Warehouse.getAt(warehouse, i, j).map(function (item) { + return elementnew(item.element(), isNew); + }).getOrThunk(function () { + return elementnew(generators.gap(), true); + }); + rowCells.push(element); + } + var row = rowcells(rowCells, warehouse.all()[i].section()); + grid.push(row); + } + return grid; + }; + var Transitions = { + toDetails: toDetails, + toGrid: toGrid + }; + + var fromWarehouse = function (warehouse, generators) { + return Transitions.toGrid(warehouse, generators, false); + }; + var deriveRows = function (rendered, generators) { + var findRow = function (details) { + var rowOfCells = findMap(details, function (detail) { + return parent(detail.element()).map(function (row) { + var isNew = parent(row).isNone(); + return elementnew(row, isNew); + }); + }); + return rowOfCells.getOrThunk(function () { + return elementnew(generators.row(), true); + }); + }; + return map(rendered, function (details) { + var row = findRow(details.details()); + return rowdatanew(row.element(), details.details(), details.section(), row.isNew()); + }); + }; + var toDetailList = function (grid, generators) { + var rendered = Transitions.toDetails(grid, eq); + return deriveRows(rendered, generators); + }; + var findInWarehouse = function (warehouse, element) { + var all = flatten(map(warehouse.all(), function (r) { + return r.cells(); + })); + return find(all, function (e) { + return eq(element, e.element()); + }); + }; + var run = function (operation, extract, adjustment, postAction, genWrappers) { + return function (wire, table, target, generators, direction) { + var input = DetailsList.fromTable(table); + var warehouse = Warehouse.generate(input); + var output = extract(warehouse, target).map(function (info) { + var model = fromWarehouse(warehouse, generators); + var result = operation(model, info, eq, genWrappers(generators)); + var grid = toDetailList(result.grid(), generators); + return { + grid: constant(grid), + cursor: result.cursor + }; + }); + return output.fold(function () { + return Option.none(); + }, function (out) { + var newElements = Redraw.render(table, out.grid()); + adjustment(table, out.grid(), direction); + postAction(table); + Bars.refresh(wire, table, BarPositions.height, direction); + return Option.some({ + cursor: out.cursor, + newRows: newElements.newRows, + newCells: newElements.newCells + }); + }); + }; + }; + var onCell = function (warehouse, target) { + return TableLookup.cell(target.element()).bind(function (cell) { + return findInWarehouse(warehouse, cell); + }); + }; + var onPaste = function (warehouse, target) { + return TableLookup.cell(target.element()).bind(function (cell) { + return findInWarehouse(warehouse, cell).map(function (details) { + var value = __assign(__assign({}, details), { + generators: target.generators, + clipboard: target.clipboard + }); + return value; + }); + }); + }; + var onPasteRows = function (warehouse, target) { + var details = map(target.selection(), function (cell) { + return TableLookup.cell(cell).bind(function (lc) { + return findInWarehouse(warehouse, lc); + }); + }); + var cells = cat(details); + return cells.length > 0 ? Option.some({ + cells: cells, + generators: target.generators, + clipboard: target.clipboard + }) : Option.none(); + }; + var onMergable = function (_warehouse, target) { + return target.mergable(); + }; + var onUnmergable = function (_warehouse, target) { + return target.unmergable(); + }; + var onCells = function (warehouse, target) { + var details = map(target.selection(), function (cell) { + return TableLookup.cell(cell).bind(function (lc) { + return findInWarehouse(warehouse, lc); + }); + }); + var cells = cat(details); + return cells.length > 0 ? Option.some(cells) : Option.none(); + }; + + var value = function (o) { + var is = function (v) { + return o === v; + }; + var or = function (opt) { + return value(o); + }; + var orThunk = function (f) { + return value(o); + }; + var map = function (f) { + return value(f(o)); + }; + var mapError = function (f) { + return value(o); + }; + var each = function (f) { + f(o); + }; + var bind = function (f) { + return f(o); + }; + var fold = function (_, onValue) { + return onValue(o); + }; + var exists = function (f) { + return f(o); + }; + var forall = function (f) { + return f(o); + }; + var toOption = function () { + return Option.some(o); + }; + return { + is: is, + isValue: always, + isError: never, + getOr: constant(o), + getOrThunk: constant(o), + getOrDie: constant(o), + or: or, + orThunk: orThunk, + fold: fold, + map: map, + mapError: mapError, + each: each, + bind: bind, + exists: exists, + forall: forall, + toOption: toOption + }; + }; + var error = function (message) { + var getOrThunk = function (f) { + return f(); + }; + var getOrDie = function () { + return die(String(message))(); + }; + var or = function (opt) { + return opt; + }; + var orThunk = function (f) { + return f(); + }; + var map = function (f) { + return error(message); + }; + var mapError = function (f) { + return error(f(message)); + }; + var bind = function (f) { + return error(message); + }; + var fold = function (onError, _) { + return onError(message); + }; + return { + is: never, + isValue: never, + isError: always, + getOr: identity, + getOrThunk: getOrThunk, + getOrDie: getOrDie, + or: or, + orThunk: orThunk, + fold: fold, + map: map, + mapError: mapError, + each: noop, + bind: bind, + exists: never, + forall: always, + toOption: Option.none + }; + }; + var fromOption = function (opt, err) { + return opt.fold(function () { + return error(err); + }, value); + }; + var Result = { + value: value, + error: error, + fromOption: fromOption + }; + + var measure = function (startAddress, gridA, gridB) { + if (startAddress.row() >= gridA.length || startAddress.column() > GridRow.cellLength(gridA[0])) { + return Result.error('invalid start address out of table bounds, row: ' + startAddress.row() + ', column: ' + startAddress.column()); + } + var rowRemainder = gridA.slice(startAddress.row()); + var colRemainder = rowRemainder[0].cells().slice(startAddress.column()); + var colRequired = GridRow.cellLength(gridB[0]); + var rowRequired = gridB.length; + return Result.value({ + rowDelta: constant(rowRemainder.length - rowRequired), + colDelta: constant(colRemainder.length - colRequired) + }); + }; + var measureWidth = function (gridA, gridB) { + var colLengthA = GridRow.cellLength(gridA[0]); + var colLengthB = GridRow.cellLength(gridB[0]); + return { + rowDelta: constant(0), + colDelta: constant(colLengthA - colLengthB) + }; + }; + var fill = function (cells, generator) { + return map(cells, function () { + return elementnew(generator.cell(), true); + }); + }; + var rowFill = function (grid, amount, generator) { + return grid.concat(repeat(amount, function (_row) { + return GridRow.setCells(grid[grid.length - 1], fill(grid[grid.length - 1].cells(), generator)); + })); + }; + var colFill = function (grid, amount, generator) { + return map(grid, function (row) { + return GridRow.setCells(row, row.cells().concat(fill(range(0, amount), generator))); + }); + }; + var tailor = function (gridA, delta, generator) { + var fillCols = delta.colDelta() < 0 ? colFill : identity; + var fillRows = delta.rowDelta() < 0 ? rowFill : identity; + var modifiedCols = fillCols(gridA, Math.abs(delta.colDelta()), generator); + var tailoredGrid = fillRows(modifiedCols, Math.abs(delta.rowDelta()), generator); + return tailoredGrid; + }; + var Fitment = { + measure: measure, + measureWidth: measureWidth, + tailor: tailor + }; + + var merge = function (grid, bounds, comparator, substitution) { + if (grid.length === 0) { + return grid; + } + for (var i = bounds.startRow(); i <= bounds.finishRow(); i++) { + for (var j = bounds.startCol(); j <= bounds.finishCol(); j++) { + GridRow.mutateCell(grid[i], j, elementnew(substitution(), false)); + } + } + return grid; + }; + var unmerge = function (grid, target, comparator, substitution) { + var first = true; + for (var i = 0; i < grid.length; i++) { + for (var j = 0; j < GridRow.cellLength(grid[0]); j++) { + var current = GridRow.getCellElement(grid[i], j); + var isToReplace = comparator(current, target); + if (isToReplace === true && first === false) { + GridRow.mutateCell(grid[i], j, elementnew(substitution(), true)); + } else if (isToReplace === true) { + first = false; + } + } + } + return grid; + }; + var uniqueCells = function (row, comparator) { + return foldl(row, function (rest, cell) { + return exists(rest, function (currentCell) { + return comparator(currentCell.element(), cell.element()); + }) ? rest : rest.concat([cell]); + }, []); + }; + var splitRows = function (grid, index, comparator, substitution) { + if (index > 0 && index < grid.length) { + var rowPrevCells = grid[index - 1].cells(); + var cells = uniqueCells(rowPrevCells, comparator); + each(cells, function (cell) { + var replacement = Option.none(); + var _loop_1 = function (i) { + var _loop_2 = function (j) { + var current = grid[i].cells()[j]; + var isToReplace = comparator(current.element(), cell.element()); + if (isToReplace) { + if (replacement.isNone()) { + replacement = Option.some(substitution()); + } + replacement.each(function (sub) { + GridRow.mutateCell(grid[i], j, elementnew(sub, true)); + }); + } + }; + for (var j = 0; j < GridRow.cellLength(grid[0]); j++) { + _loop_2(j); + } + }; + for (var i = index; i < grid.length; i++) { + _loop_1(i); + } + }); + } + return grid; + }; + var MergingOperations = { + merge: merge, + unmerge: unmerge, + splitRows: splitRows + }; + + var isSpanning = function (grid, row, col, comparator) { + var candidate = GridRow.getCell(grid[row], col); + var matching = curry(comparator, candidate.element()); + var currentRow = grid[row]; + return grid.length > 1 && GridRow.cellLength(currentRow) > 1 && (col > 0 && matching(GridRow.getCellElement(currentRow, col - 1)) || col < currentRow.cells().length - 1 && matching(GridRow.getCellElement(currentRow, col + 1)) || row > 0 && matching(GridRow.getCellElement(grid[row - 1], col)) || row < grid.length - 1 && matching(GridRow.getCellElement(grid[row + 1], col))); + }; + var mergeTables = function (startAddress, gridA, gridB, generator, comparator) { + var startRow = startAddress.row(); + var startCol = startAddress.column(); + var mergeHeight = gridB.length; + var mergeWidth = GridRow.cellLength(gridB[0]); + var endRow = startRow + mergeHeight; + var endCol = startCol + mergeWidth; + for (var r = startRow; r < endRow; r++) { + for (var c = startCol; c < endCol; c++) { + if (isSpanning(gridA, r, c, comparator)) { + MergingOperations.unmerge(gridA, GridRow.getCellElement(gridA[r], c), comparator, generator.cell); + } + var newCell = GridRow.getCellElement(gridB[r - startRow], c - startCol); + var replacement = generator.replace(newCell); + GridRow.mutateCell(gridA[r], c, elementnew(replacement, true)); + } + } + return gridA; + }; + var merge$1 = function (startAddress, gridA, gridB, generator, comparator) { + var result = Fitment.measure(startAddress, gridA, gridB); + return result.map(function (delta) { + var fittedGrid = Fitment.tailor(gridA, delta, generator); + return mergeTables(startAddress, fittedGrid, gridB, generator, comparator); + }); + }; + var insert = function (index, gridA, gridB, generator, comparator) { + MergingOperations.splitRows(gridA, index, comparator, generator.cell); + var delta = Fitment.measureWidth(gridB, gridA); + var fittedNewGrid = Fitment.tailor(gridB, delta, generator); + var secondDelta = Fitment.measureWidth(gridA, fittedNewGrid); + var fittedOldGrid = Fitment.tailor(gridA, secondDelta, generator); + return fittedOldGrid.slice(0, index).concat(fittedNewGrid).concat(fittedOldGrid.slice(index, fittedOldGrid.length)); + }; + var TableMerge = { + merge: merge$1, + insert: insert + }; + + var insertRowAt = function (grid, index, example, comparator, substitution) { + var before = grid.slice(0, index); + var after = grid.slice(index); + var between = GridRow.mapCells(grid[example], function (ex, c) { + var withinSpan = index > 0 && index < grid.length && comparator(GridRow.getCellElement(grid[index - 1], c), GridRow.getCellElement(grid[index], c)); + var ret = withinSpan ? GridRow.getCell(grid[index], c) : elementnew(substitution(ex.element(), comparator), true); + return ret; + }); + return before.concat([between]).concat(after); + }; + var insertColumnAt = function (grid, index, example, comparator, substitution) { + return map(grid, function (row) { + var withinSpan = index > 0 && index < GridRow.cellLength(row) && comparator(GridRow.getCellElement(row, index - 1), GridRow.getCellElement(row, index)); + var sub = withinSpan ? GridRow.getCell(row, index) : elementnew(substitution(GridRow.getCellElement(row, example), comparator), true); + return GridRow.addCell(row, index, sub); + }); + }; + var splitCellIntoColumns = function (grid, exampleRow, exampleCol, comparator, substitution) { + var index = exampleCol + 1; + return map(grid, function (row, i) { + var isTargetCell = i === exampleRow; + var sub = isTargetCell ? elementnew(substitution(GridRow.getCellElement(row, exampleCol), comparator), true) : GridRow.getCell(row, exampleCol); + return GridRow.addCell(row, index, sub); + }); + }; + var splitCellIntoRows = function (grid, exampleRow, exampleCol, comparator, substitution) { + var index = exampleRow + 1; + var before = grid.slice(0, index); + var after = grid.slice(index); + var between = GridRow.mapCells(grid[exampleRow], function (ex, i) { + var isTargetCell = i === exampleCol; + return isTargetCell ? elementnew(substitution(ex.element(), comparator), true) : ex; + }); + return before.concat([between]).concat(after); + }; + var deleteColumnsAt = function (grid, start, finish) { + var rows = map(grid, function (row) { + var cells = row.cells().slice(0, start).concat(row.cells().slice(finish + 1)); + return rowcells(cells, row.section()); + }); + return filter(rows, function (row) { + return row.cells().length > 0; + }); + }; + var deleteRowsAt = function (grid, start, finish) { + return grid.slice(0, start).concat(grid.slice(finish + 1)); + }; + var ModificationOperations = { + insertRowAt: insertRowAt, + insertColumnAt: insertColumnAt, + splitCellIntoColumns: splitCellIntoColumns, + splitCellIntoRows: splitCellIntoRows, + deleteRowsAt: deleteRowsAt, + deleteColumnsAt: deleteColumnsAt + }; + + var replaceIn = function (grid, targets, comparator, substitution) { + var isTarget = function (cell) { + return exists(targets, function (target) { + return comparator(cell.element(), target.element()); + }); + }; + return map(grid, function (row) { + return GridRow.mapCells(row, function (cell) { + return isTarget(cell) ? elementnew(substitution(cell.element(), comparator), true) : cell; + }); + }); + }; + var notStartRow = function (grid, rowIndex, colIndex, comparator) { + return GridRow.getCellElement(grid[rowIndex], colIndex) !== undefined && (rowIndex > 0 && comparator(GridRow.getCellElement(grid[rowIndex - 1], colIndex), GridRow.getCellElement(grid[rowIndex], colIndex))); + }; + var notStartColumn = function (row, index, comparator) { + return index > 0 && comparator(GridRow.getCellElement(row, index - 1), GridRow.getCellElement(row, index)); + }; + var replaceColumn = function (grid, index, comparator, substitution) { + var targets = bind(grid, function (row, i) { + var alreadyAdded = notStartRow(grid, i, index, comparator) || notStartColumn(row, index, comparator); + return alreadyAdded ? [] : [GridRow.getCell(row, index)]; + }); + return replaceIn(grid, targets, comparator, substitution); + }; + var replaceRow = function (grid, index, comparator, substitution) { + var targetRow = grid[index]; + var targets = bind(targetRow.cells(), function (item, i) { + var alreadyAdded = notStartRow(grid, index, i, comparator) || notStartColumn(targetRow, i, comparator); + return alreadyAdded ? [] : [item]; + }); + return replaceIn(grid, targets, comparator, substitution); + }; + var TransformOperations = { + replaceColumn: replaceColumn, + replaceRow: replaceRow + }; + + var adt = Adt.generate([ + { none: [] }, + { only: ['index'] }, + { + left: [ + 'index', + 'next' + ] + }, + { + middle: [ + 'prev', + 'index', + 'next' + ] + }, + { + right: [ + 'prev', + 'index' + ] + } + ]); + var ColumnContext = __assign({}, adt); + + var neighbours$1 = function (input, index) { + if (input.length === 0) { + return ColumnContext.none(); + } + if (input.length === 1) { + return ColumnContext.only(0); + } + if (index === 0) { + return ColumnContext.left(0, 1); + } + if (index === input.length - 1) { + return ColumnContext.right(index - 1, index); + } + if (index > 0 && index < input.length - 1) { + return ColumnContext.middle(index - 1, index, index + 1); + } + return ColumnContext.none(); + }; + var determine = function (input, column, step, tableSize) { + var result = input.slice(0); + var context = neighbours$1(input, column); + var zero = function (array) { + return map(array, constant(0)); + }; + var onNone = constant(zero(result)); + var onOnly = function (index) { + return tableSize.singleColumnWidth(result[index], step); + }; + var onChange = function (index, next) { + if (step >= 0) { + var newNext = Math.max(tableSize.minCellWidth(), result[next] - step); + return zero(result.slice(0, index)).concat([ + step, + newNext - result[next] + ]).concat(zero(result.slice(next + 1))); + } else { + var newThis = Math.max(tableSize.minCellWidth(), result[index] + step); + var diffx = result[index] - newThis; + return zero(result.slice(0, index)).concat([ + newThis - result[index], + diffx + ]).concat(zero(result.slice(next + 1))); + } + }; + var onLeft = onChange; + var onMiddle = function (_prev, index, next) { + return onChange(index, next); + }; + var onRight = function (_prev, index) { + if (step >= 0) { + return zero(result.slice(0, index)).concat([step]); + } else { + var size = Math.max(tableSize.minCellWidth(), result[index] + step); + return zero(result.slice(0, index)).concat([size - result[index]]); + } + }; + return context.fold(onNone, onOnly, onLeft, onMiddle, onRight); + }; + var Deltas = { determine: determine }; + + var getSpan$1 = function (cell, type) { + return has(cell, type) && parseInt(get(cell, type), 10) > 1; + }; + var hasColspan = function (cell) { + return getSpan$1(cell, 'colspan'); + }; + var hasRowspan = function (cell) { + return getSpan$1(cell, 'rowspan'); + }; + var getInt = function (element, property) { + return parseInt(get$1(element, property), 10); + }; + var CellUtils = { + hasColspan: hasColspan, + hasRowspan: hasRowspan, + minWidth: constant(10), + minHeight: constant(10), + getInt: getInt + }; + + var getRaw$1 = function (cell, property, getter) { + return getRaw(cell, property).fold(function () { + return getter(cell) + 'px'; + }, function (raw) { + return raw; + }); + }; + var getRawW = function (cell, tableSize) { + return getRaw$1(cell, 'width', function (e) { + return Sizes.getPixelWidth(e, tableSize); + }); + }; + var getRawH = function (cell) { + return getRaw$1(cell, 'height', Sizes.getHeight); + }; + var getWidthFrom = function (warehouse, direction, getWidth, fallback, tableSize) { + var columns = Blocks.columns(warehouse); + var backups = map(columns, function (cellOption) { + return cellOption.map(direction.edge); + }); + return map(columns, function (cellOption, c) { + var columnCell = cellOption.filter(not(CellUtils.hasColspan)); + return columnCell.fold(function () { + var deduced = deduce(backups, c); + return fallback(deduced); + }, function (cell) { + return getWidth(cell, tableSize); + }); + }); + }; + var getDeduced = function (deduced) { + return deduced.map(function (d) { + return d + 'px'; + }).getOr(''); + }; + var getRawWidths = function (warehouse, direction, tableSize) { + return getWidthFrom(warehouse, direction, getRawW, getDeduced, tableSize); + }; + var getPercentageWidths = function (warehouse, direction, tableSize) { + return getWidthFrom(warehouse, direction, Sizes.getPercentageWidth, function (deduced) { + return deduced.fold(function () { + return tableSize.minCellWidth(); + }, function (cellWidth) { + return cellWidth / tableSize.pixelWidth() * 100; + }); + }, tableSize); + }; + var getPixelWidths = function (warehouse, direction, tableSize) { + return getWidthFrom(warehouse, direction, Sizes.getPixelWidth, function (deduced) { + return deduced.getOrThunk(tableSize.minCellWidth); + }, tableSize); + }; + var getHeightFrom = function (warehouse, direction, getHeight, fallback) { + var rows = Blocks.rows(warehouse); + var backups = map(rows, function (cellOption) { + return cellOption.map(direction.edge); + }); + return map(rows, function (cellOption, c) { + var rowCell = cellOption.filter(not(CellUtils.hasRowspan)); + return rowCell.fold(function () { + var deduced = deduce(backups, c); + return fallback(deduced); + }, function (cell) { + return getHeight(cell); + }); + }); + }; + var getPixelHeights = function (warehouse, direction) { + return getHeightFrom(warehouse, direction, Sizes.getHeight, function (deduced) { + return deduced.getOrThunk(CellUtils.minHeight); + }); + }; + var getRawHeights = function (warehouse, direction) { + return getHeightFrom(warehouse, direction, getRawH, getDeduced); + }; + var ColumnSizes = { + getRawWidths: getRawWidths, + getPixelWidths: getPixelWidths, + getPercentageWidths: getPercentageWidths, + getPixelHeights: getPixelHeights, + getRawHeights: getRawHeights + }; + + var total = function (start, end, measures) { + var r = 0; + for (var i = start; i < end; i++) { + r += measures[i] !== undefined ? measures[i] : 0; + } + return r; + }; + var recalculateWidth = function (warehouse, widths) { + var all = Warehouse.justCells(warehouse); + return map(all, function (cell) { + var width = total(cell.column(), cell.column() + cell.colspan(), widths); + return { + element: cell.element, + width: constant(width), + colspan: cell.colspan + }; + }); + }; + var recalculateHeight = function (warehouse, heights) { + var all = Warehouse.justCells(warehouse); + return map(all, function (cell) { + var height = total(cell.row(), cell.row() + cell.rowspan(), heights); + return { + element: cell.element, + height: constant(height), + rowspan: cell.rowspan + }; + }); + }; + var matchRowHeight = function (warehouse, heights) { + return map(warehouse.all(), function (row, i) { + return { + element: row.element, + height: constant(heights[i]) + }; + }); + }; + var Recalculations = { + recalculateWidth: recalculateWidth, + recalculateHeight: recalculateHeight, + matchRowHeight: matchRowHeight + }; + + var percentageSize = function (width, element) { + var floatWidth = parseFloat(width); + var pixelWidth = get$4(element); + var getCellDelta = function (delta) { + return delta / pixelWidth * 100; + }; + var singleColumnWidth = function (w, _delta) { + return [100 - w]; + }; + var minCellWidth = function () { + return CellUtils.minWidth() / pixelWidth * 100; + }; + var setTableWidth = function (table, _newWidths, delta) { + var ratio = delta / 100; + var change = ratio * floatWidth; + Sizes.setPercentageWidth(table, floatWidth + change); + }; + return { + width: constant(floatWidth), + pixelWidth: constant(pixelWidth), + getWidths: ColumnSizes.getPercentageWidths, + getCellDelta: getCellDelta, + singleColumnWidth: singleColumnWidth, + minCellWidth: minCellWidth, + setElementWidth: Sizes.setPercentageWidth, + setTableWidth: setTableWidth + }; + }; + var pixelSize = function (width) { + var getCellDelta = identity; + var singleColumnWidth = function (w, delta) { + var newNext = Math.max(CellUtils.minWidth(), w + delta); + return [newNext - w]; + }; + var setTableWidth = function (table, newWidths, _delta) { + var total = foldr(newWidths, function (b, a) { + return b + a; + }, 0); + Sizes.setPixelWidth(table, total); + }; + return { + width: constant(width), + pixelWidth: constant(width), + getWidths: ColumnSizes.getPixelWidths, + getCellDelta: getCellDelta, + singleColumnWidth: singleColumnWidth, + minCellWidth: CellUtils.minWidth, + setElementWidth: Sizes.setPixelWidth, + setTableWidth: setTableWidth + }; + }; + var chooseSize = function (element, width) { + var percentMatch = Sizes.percentageBasedSizeRegex().exec(width); + if (percentMatch !== null) { + return percentageSize(percentMatch[1], element); + } + var pixelMatch = Sizes.pixelBasedSizeRegex().exec(width); + if (pixelMatch !== null) { + var intWidth = parseInt(pixelMatch[1], 10); + return pixelSize(intWidth); + } + var fallbackWidth = get$4(element); + return pixelSize(fallbackWidth); + }; + var getTableSize = function (element) { + var width = Sizes.getRawWidth(element); + return width.fold(function () { + var fallbackWidth = get$4(element); + return pixelSize(fallbackWidth); + }, function (w) { + return chooseSize(element, w); + }); + }; + var TableSize = { getTableSize: getTableSize }; + + var getWarehouse$1 = function (list) { + return Warehouse.generate(list); + }; + var sumUp = function (newSize) { + return foldr(newSize, function (b, a) { + return b + a; + }, 0); + }; + var getTableWarehouse = function (table) { + var list = DetailsList.fromTable(table); + return getWarehouse$1(list); + }; + var adjustWidth = function (table, delta, index, direction) { + var tableSize = TableSize.getTableSize(table); + var step = tableSize.getCellDelta(delta); + var warehouse = getTableWarehouse(table); + var widths = tableSize.getWidths(warehouse, direction, tableSize); + var deltas = Deltas.determine(widths, index, step, tableSize); + var newWidths = map(deltas, function (dx, i) { + return dx + widths[i]; + }); + var newSizes = Recalculations.recalculateWidth(warehouse, newWidths); + each(newSizes, function (cell) { + tableSize.setElementWidth(cell.element(), cell.width()); + }); + if (index === warehouse.grid().columns() - 1) { + tableSize.setTableWidth(table, newWidths, step); + } + }; + var adjustHeight = function (table, delta, index, direction) { + var warehouse = getTableWarehouse(table); + var heights = ColumnSizes.getPixelHeights(warehouse, direction); + var newHeights = map(heights, function (dy, i) { + return index === i ? Math.max(delta + dy, CellUtils.minHeight()) : dy; + }); + var newCellSizes = Recalculations.recalculateHeight(warehouse, newHeights); + var newRowSizes = Recalculations.matchRowHeight(warehouse, newHeights); + each(newRowSizes, function (row) { + Sizes.setHeight(row.element(), row.height()); + }); + each(newCellSizes, function (cell) { + Sizes.setHeight(cell.element(), cell.height()); + }); + var total = sumUp(newHeights); + Sizes.setHeight(table, total); + }; + var adjustWidthTo = function (table, list, direction) { + var tableSize = TableSize.getTableSize(table); + var warehouse = getWarehouse$1(list); + var widths = tableSize.getWidths(warehouse, direction, tableSize); + var newSizes = Recalculations.recalculateWidth(warehouse, widths); + each(newSizes, function (cell) { + tableSize.setElementWidth(cell.element(), cell.width()); + }); + if (newSizes.length > 0) { + tableSize.setTableWidth(table, widths, tableSize.getCellDelta(0)); + } + }; + var Adjustments = { + adjustWidth: adjustWidth, + adjustHeight: adjustHeight, + adjustWidthTo: adjustWidthTo + }; + + var Cell = function (initial) { + var value = initial; + var get = function () { + return value; + }; + var set = function (v) { + value = v; + }; + var clone = function () { + return Cell(get()); + }; + return { + get: get, + set: set, + clone: clone + }; + }; + + var base = function (handleUnsupported, required) { + return baseWith(handleUnsupported, required, { + validate: isFunction, + label: 'function' + }); + }; + var baseWith = function (handleUnsupported, required, pred) { + if (required.length === 0) { + throw new Error('You must specify at least one required field.'); + } + validateStrArr('required', required); + checkDupes(required); + return function (obj) { + var keys$1 = keys(obj); + var allReqd = forall(required, function (req) { + return contains(keys$1, req); + }); + if (!allReqd) { + reqMessage(required, keys$1); + } + handleUnsupported(required, keys$1); + var invalidKeys = filter(required, function (key) { + return !pred.validate(obj[key], key); + }); + if (invalidKeys.length > 0) { + invalidTypeMessage(invalidKeys, pred.label); + } + return obj; + }; + }; + var handleExact = function (required, keys) { + var unsupported = filter(keys, function (key) { + return !contains(required, key); + }); + if (unsupported.length > 0) { + unsuppMessage(unsupported); + } + }; + var exactly = function (required) { + return base(handleExact, required); + }; + + var verifyGenerators = exactly([ + 'cell', + 'row', + 'replace', + 'gap' + ]); + var elementToData = function (element) { + var colspan = has(element, 'colspan') ? parseInt(get(element, 'colspan'), 10) : 1; + var rowspan = has(element, 'rowspan') ? parseInt(get(element, 'rowspan'), 10) : 1; + return { + element: constant(element), + colspan: constant(colspan), + rowspan: constant(rowspan) + }; + }; + var modification = function (generators, toData) { + if (toData === void 0) { + toData = elementToData; + } + verifyGenerators(generators); + var position = Cell(Option.none()); + var nu = function (data) { + return generators.cell(data); + }; + var nuFrom = function (element) { + var data = toData(element); + return nu(data); + }; + var add = function (element) { + var replacement = nuFrom(element); + if (position.get().isNone()) { + position.set(Option.some(replacement)); + } + recent = Option.some({ + item: element, + replacement: replacement + }); + return replacement; + }; + var recent = Option.none(); + var getOrInit = function (element, comparator) { + return recent.fold(function () { + return add(element); + }, function (p) { + return comparator(element, p.item) ? p.replacement : add(element); + }); + }; + return { + getOrInit: getOrInit, + cursor: position.get + }; + }; + var transform = function (scope, tag) { + return function (generators) { + var position = Cell(Option.none()); + verifyGenerators(generators); + var list = []; + var find$1 = function (element, comparator) { + return find(list, function (x) { + return comparator(x.item, element); + }); + }; + var makeNew = function (element) { + var attrs = { scope: scope }; + var cell = generators.replace(element, tag, attrs); + list.push({ + item: element, + sub: cell + }); + if (position.get().isNone()) { + position.set(Option.some(cell)); + } + return cell; + }; + var replaceOrInit = function (element, comparator) { + return find$1(element, comparator).fold(function () { + return makeNew(element); + }, function (p) { + return comparator(element, p.item) ? p.sub : makeNew(element); + }); + }; + return { + replaceOrInit: replaceOrInit, + cursor: position.get + }; + }; + }; + var merging = function (generators) { + verifyGenerators(generators); + var position = Cell(Option.none()); + var combine = function (cell) { + if (position.get().isNone()) { + position.set(Option.some(cell)); + } + return function () { + var raw = generators.cell({ + element: constant(cell), + colspan: constant(1), + rowspan: constant(1) + }); + remove$1(raw, 'width'); + remove$1(cell, 'width'); + return raw; + }; + }; + return { + combine: combine, + cursor: position.get + }; + }; + var Generators = { + modification: modification, + transform: transform, + merging: merging + }; + + var blockList = [ + 'body', + 'p', + 'div', + 'article', + 'aside', + 'figcaption', + 'figure', + 'footer', + 'header', + 'nav', + 'section', + 'ol', + 'ul', + 'table', + 'thead', + 'tfoot', + 'tbody', + 'caption', + 'tr', + 'td', + 'th', + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'blockquote', + 'pre', + 'address' + ]; + var isList = function (universe, item) { + var tagName = universe.property().name(item); + return contains([ + 'ol', + 'ul' + ], tagName); + }; + var isBlock = function (universe, item) { + var tagName = universe.property().name(item); + return contains(blockList, tagName); + }; + var isFormatting = function (universe, item) { + var tagName = universe.property().name(item); + return contains([ + 'address', + 'pre', + 'p', + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6' + ], tagName); + }; + var isHeading = function (universe, item) { + var tagName = universe.property().name(item); + return contains([ + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6' + ], tagName); + }; + var isContainer = function (universe, item) { + return contains([ + 'div', + 'li', + 'td', + 'th', + 'blockquote', + 'body', + 'caption' + ], universe.property().name(item)); + }; + var isEmptyTag = function (universe, item) { + return contains([ + 'br', + 'img', + 'hr', + 'input' + ], universe.property().name(item)); + }; + var isFrame = function (universe, item) { + return universe.property().name(item) === 'iframe'; + }; + var isInline = function (universe, item) { + return !(isBlock(universe, item) || isEmptyTag(universe, item)) && universe.property().name(item) !== 'li'; + }; + var Structure = { + isBlock: isBlock, + isList: isList, + isFormatting: isFormatting, + isHeading: isHeading, + isContainer: isContainer, + isEmptyTag: isEmptyTag, + isFrame: isFrame, + isInline: isInline + }; + + var universe$1 = DomUniverse(); + var isBlock$1 = function (element) { + return Structure.isBlock(universe$1, element); + }; + var isList$1 = function (element) { + return Structure.isList(universe$1, element); + }; + var isFormatting$1 = function (element) { + return Structure.isFormatting(universe$1, element); + }; + var isHeading$1 = function (element) { + return Structure.isHeading(universe$1, element); + }; + var isContainer$1 = function (element) { + return Structure.isContainer(universe$1, element); + }; + var isEmptyTag$1 = function (element) { + return Structure.isEmptyTag(universe$1, element); + }; + var isFrame$1 = function (element) { + return Structure.isFrame(universe$1, element); + }; + var isInline$1 = function (element) { + return Structure.isInline(universe$1, element); + }; + var DomStructure = { + isBlock: isBlock$1, + isList: isList$1, + isFormatting: isFormatting$1, + isHeading: isHeading$1, + isContainer: isContainer$1, + isEmptyTag: isEmptyTag$1, + isFrame: isFrame$1, + isInline: isInline$1 + }; + + var merge$2 = function (cells) { + var isBr = function (el) { + return name(el) === 'br'; + }; + var advancedBr = function (children) { + return forall(children, function (c) { + return isBr(c) || isText(c) && get$2(c).trim().length === 0; + }); + }; + var isListItem = function (el) { + return name(el) === 'li' || ancestor(el, DomStructure.isList).isSome(); + }; + var siblingIsBlock = function (el) { + return nextSibling(el).map(function (rightSibling) { + if (DomStructure.isBlock(rightSibling)) { + return true; + } + if (DomStructure.isEmptyTag(rightSibling)) { + return name(rightSibling) === 'img' ? false : true; + } + return false; + }).getOr(false); + }; + var markCell = function (cell) { + return last$1(cell).bind(function (rightEdge) { + var rightSiblingIsBlock = siblingIsBlock(rightEdge); + return parent(rightEdge).map(function (parent) { + return rightSiblingIsBlock === true || isListItem(parent) || isBr(rightEdge) || DomStructure.isBlock(parent) && !eq(cell, parent) ? [] : [Element.fromTag('br')]; + }); + }).getOr([]); + }; + var markContent = function () { + var content = bind(cells, function (cell) { + var children$1 = children(cell); + return advancedBr(children$1) ? [] : children$1.concat(markCell(cell)); + }); + return content.length === 0 ? [Element.fromTag('br')] : content; + }; + var contents = markContent(); + empty(cells[0]); + append$1(cells[0], contents); + }; + var TableContent = { merge: merge$2 }; + + var prune = function (table) { + var cells = TableLookup.cells(table); + if (cells.length === 0) { + remove$2(table); + } + }; + var outcome = Immutable('grid', 'cursor'); + var elementFromGrid = function (grid, row, column) { + return findIn(grid, row, column).orThunk(function () { + return findIn(grid, 0, 0); + }); + }; + var findIn = function (grid, row, column) { + return Option.from(grid[row]).bind(function (r) { + return Option.from(r.cells()[column]).bind(function (c) { + return Option.from(c.element()); + }); + }); + }; + var bundle = function (grid, row, column) { + return outcome(grid, findIn(grid, row, column)); + }; + var uniqueRows = function (details) { + return foldl(details, function (rest, detail) { + return exists(rest, function (currentDetail) { + return currentDetail.row() === detail.row(); + }) ? rest : rest.concat([detail]); + }, []).sort(function (detailA, detailB) { + return detailA.row() - detailB.row(); + }); + }; + var uniqueColumns = function (details) { + return foldl(details, function (rest, detail) { + return exists(rest, function (currentDetail) { + return currentDetail.column() === detail.column(); + }) ? rest : rest.concat([detail]); + }, []).sort(function (detailA, detailB) { + return detailA.column() - detailB.column(); + }); + }; + var insertRowBefore = function (grid, detail, comparator, genWrappers) { + var example = detail.row(); + var targetIndex = detail.row(); + var newGrid = ModificationOperations.insertRowAt(grid, targetIndex, example, comparator, genWrappers.getOrInit); + return bundle(newGrid, targetIndex, detail.column()); + }; + var insertRowsBefore = function (grid, details, comparator, genWrappers) { + var example = details[0].row(); + var targetIndex = details[0].row(); + var rows = uniqueRows(details); + var newGrid = foldl(rows, function (newG, _row) { + return ModificationOperations.insertRowAt(newG, targetIndex, example, comparator, genWrappers.getOrInit); + }, grid); + return bundle(newGrid, targetIndex, details[0].column()); + }; + var insertRowAfter = function (grid, detail, comparator, genWrappers) { + var example = detail.row(); + var targetIndex = detail.row() + detail.rowspan(); + var newGrid = ModificationOperations.insertRowAt(grid, targetIndex, example, comparator, genWrappers.getOrInit); + return bundle(newGrid, targetIndex, detail.column()); + }; + var insertRowsAfter = function (grid, details, comparator, genWrappers) { + var rows = uniqueRows(details); + var example = rows[rows.length - 1].row(); + var targetIndex = rows[rows.length - 1].row() + rows[rows.length - 1].rowspan(); + var newGrid = foldl(rows, function (newG, _row) { + return ModificationOperations.insertRowAt(newG, targetIndex, example, comparator, genWrappers.getOrInit); + }, grid); + return bundle(newGrid, targetIndex, details[0].column()); + }; + var insertColumnBefore = function (grid, detail, comparator, genWrappers) { + var example = detail.column(); + var targetIndex = detail.column(); + var newGrid = ModificationOperations.insertColumnAt(grid, targetIndex, example, comparator, genWrappers.getOrInit); + return bundle(newGrid, detail.row(), targetIndex); + }; + var insertColumnsBefore = function (grid, details, comparator, genWrappers) { + var columns = uniqueColumns(details); + var example = columns[0].column(); + var targetIndex = columns[0].column(); + var newGrid = foldl(columns, function (newG, _row) { + return ModificationOperations.insertColumnAt(newG, targetIndex, example, comparator, genWrappers.getOrInit); + }, grid); + return bundle(newGrid, details[0].row(), targetIndex); + }; + var insertColumnAfter = function (grid, detail, comparator, genWrappers) { + var example = detail.column(); + var targetIndex = detail.column() + detail.colspan(); + var newGrid = ModificationOperations.insertColumnAt(grid, targetIndex, example, comparator, genWrappers.getOrInit); + return bundle(newGrid, detail.row(), targetIndex); + }; + var insertColumnsAfter = function (grid, details, comparator, genWrappers) { + var example = details[details.length - 1].column(); + var targetIndex = details[details.length - 1].column() + details[details.length - 1].colspan(); + var columns = uniqueColumns(details); + var newGrid = foldl(columns, function (newG, _row) { + return ModificationOperations.insertColumnAt(newG, targetIndex, example, comparator, genWrappers.getOrInit); + }, grid); + return bundle(newGrid, details[0].row(), targetIndex); + }; + var makeRowHeader = function (grid, detail, comparator, genWrappers) { + var newGrid = TransformOperations.replaceRow(grid, detail.row(), comparator, genWrappers.replaceOrInit); + return bundle(newGrid, detail.row(), detail.column()); + }; + var makeColumnHeader = function (grid, detail, comparator, genWrappers) { + var newGrid = TransformOperations.replaceColumn(grid, detail.column(), comparator, genWrappers.replaceOrInit); + return bundle(newGrid, detail.row(), detail.column()); + }; + var unmakeRowHeader = function (grid, detail, comparator, genWrappers) { + var newGrid = TransformOperations.replaceRow(grid, detail.row(), comparator, genWrappers.replaceOrInit); + return bundle(newGrid, detail.row(), detail.column()); + }; + var unmakeColumnHeader = function (grid, detail, comparator, genWrappers) { + var newGrid = TransformOperations.replaceColumn(grid, detail.column(), comparator, genWrappers.replaceOrInit); + return bundle(newGrid, detail.row(), detail.column()); + }; + var splitCellIntoColumns$1 = function (grid, detail, comparator, genWrappers) { + var newGrid = ModificationOperations.splitCellIntoColumns(grid, detail.row(), detail.column(), comparator, genWrappers.getOrInit); + return bundle(newGrid, detail.row(), detail.column()); + }; + var splitCellIntoRows$1 = function (grid, detail, comparator, genWrappers) { + var newGrid = ModificationOperations.splitCellIntoRows(grid, detail.row(), detail.column(), comparator, genWrappers.getOrInit); + return bundle(newGrid, detail.row(), detail.column()); + }; + var eraseColumns = function (grid, details, _comparator, _genWrappers) { + var columns = uniqueColumns(details); + var newGrid = ModificationOperations.deleteColumnsAt(grid, columns[0].column(), columns[columns.length - 1].column()); + var cursor = elementFromGrid(newGrid, details[0].row(), details[0].column()); + return outcome(newGrid, cursor); + }; + var eraseRows = function (grid, details, _comparator, _genWrappers) { + var rows = uniqueRows(details); + var newGrid = ModificationOperations.deleteRowsAt(grid, rows[0].row(), rows[rows.length - 1].row()); + var cursor = elementFromGrid(newGrid, details[0].row(), details[0].column()); + return outcome(newGrid, cursor); + }; + var mergeCells = function (grid, mergable, comparator, _genWrappers) { + var cells = mergable.cells(); + TableContent.merge(cells); + var newGrid = MergingOperations.merge(grid, mergable.bounds(), comparator, constant(cells[0])); + return outcome(newGrid, Option.from(cells[0])); + }; + var unmergeCells = function (grid, unmergable, comparator, genWrappers) { + var newGrid = foldr(unmergable, function (b, cell) { + return MergingOperations.unmerge(b, cell, comparator, genWrappers.combine(cell)); + }, grid); + return outcome(newGrid, Option.from(unmergable[0])); + }; + var pasteCells = function (grid, pasteDetails, comparator, _genWrappers) { + var gridify = function (table, generators) { + var list = DetailsList.fromTable(table); + var wh = Warehouse.generate(list); + return Transitions.toGrid(wh, generators, true); + }; + var gridB = gridify(pasteDetails.clipboard(), pasteDetails.generators()); + var startAddress = address(pasteDetails.row(), pasteDetails.column()); + var mergedGrid = TableMerge.merge(startAddress, grid, gridB, pasteDetails.generators(), comparator); + return mergedGrid.fold(function () { + return outcome(grid, Option.some(pasteDetails.element())); + }, function (nuGrid) { + var cursor = elementFromGrid(nuGrid, pasteDetails.row(), pasteDetails.column()); + return outcome(nuGrid, cursor); + }); + }; + var gridifyRows = function (rows, generators, example) { + var pasteDetails = DetailsList.fromPastedRows(rows, example); + var wh = Warehouse.generate(pasteDetails); + return Transitions.toGrid(wh, generators, true); + }; + var pasteRowsBefore = function (grid, pasteDetails, comparator, _genWrappers) { + var example = grid[pasteDetails.cells[0].row()]; + var index = pasteDetails.cells[0].row(); + var gridB = gridifyRows(pasteDetails.clipboard(), pasteDetails.generators(), example); + var mergedGrid = TableMerge.insert(index, grid, gridB, pasteDetails.generators(), comparator); + var cursor = elementFromGrid(mergedGrid, pasteDetails.cells[0].row(), pasteDetails.cells[0].column()); + return outcome(mergedGrid, cursor); + }; + var pasteRowsAfter = function (grid, pasteDetails, comparator, _genWrappers) { + var example = grid[pasteDetails.cells[0].row()]; + var index = pasteDetails.cells[pasteDetails.cells.length - 1].row() + pasteDetails.cells[pasteDetails.cells.length - 1].rowspan(); + var gridB = gridifyRows(pasteDetails.clipboard(), pasteDetails.generators(), example); + var mergedGrid = TableMerge.insert(index, grid, gridB, pasteDetails.generators(), comparator); + var cursor = elementFromGrid(mergedGrid, pasteDetails.cells[0].row(), pasteDetails.cells[0].column()); + return outcome(mergedGrid, cursor); + }; + var resize = Adjustments.adjustWidthTo; + var TableOperations = { + insertRowBefore: run(insertRowBefore, onCell, noop, noop, Generators.modification), + insertRowsBefore: run(insertRowsBefore, onCells, noop, noop, Generators.modification), + insertRowAfter: run(insertRowAfter, onCell, noop, noop, Generators.modification), + insertRowsAfter: run(insertRowsAfter, onCells, noop, noop, Generators.modification), + insertColumnBefore: run(insertColumnBefore, onCell, resize, noop, Generators.modification), + insertColumnsBefore: run(insertColumnsBefore, onCells, resize, noop, Generators.modification), + insertColumnAfter: run(insertColumnAfter, onCell, resize, noop, Generators.modification), + insertColumnsAfter: run(insertColumnsAfter, onCells, resize, noop, Generators.modification), + splitCellIntoColumns: run(splitCellIntoColumns$1, onCell, resize, noop, Generators.modification), + splitCellIntoRows: run(splitCellIntoRows$1, onCell, noop, noop, Generators.modification), + eraseColumns: run(eraseColumns, onCells, resize, prune, Generators.modification), + eraseRows: run(eraseRows, onCells, noop, prune, Generators.modification), + makeColumnHeader: run(makeColumnHeader, onCell, noop, noop, Generators.transform('row', 'th')), + unmakeColumnHeader: run(unmakeColumnHeader, onCell, noop, noop, Generators.transform(null, 'td')), + makeRowHeader: run(makeRowHeader, onCell, noop, noop, Generators.transform('col', 'th')), + unmakeRowHeader: run(unmakeRowHeader, onCell, noop, noop, Generators.transform(null, 'td')), + mergeCells: run(mergeCells, onMergable, noop, noop, Generators.merging), + unmergeCells: run(unmergeCells, onUnmergable, resize, noop, Generators.merging), + pasteCells: run(pasteCells, onPaste, resize, noop, Generators.modification), + pasteRowsBefore: run(pasteRowsBefore, onPasteRows, noop, noop, Generators.modification), + pasteRowsAfter: run(pasteRowsAfter, onPasteRows, noop, noop, Generators.modification) + }; + + var getBody$1 = function (editor) { + return Element.fromDom(editor.getBody()); + }; + var getPixelWidth$1 = function (elm) { + return elm.getBoundingClientRect().width; + }; + var getPixelHeight = function (elm) { + return elm.getBoundingClientRect().height; + }; + var getIsRoot = function (editor) { + return function (element) { + return eq(element, getBody$1(editor)); + }; + }; + var removePxSuffix = function (size) { + return size ? size.replace(/px$/, '') : ''; + }; + var addSizeSuffix = function (size) { + if (/^[0-9]+$/.test(size)) { + size += 'px'; + } + return size; + }; + var removeDataStyle = function (table) { + var dataStyleCells = descendants$1(table, 'td[data-mce-style],th[data-mce-style]'); + remove(table, 'data-mce-style'); + each(dataStyleCells, function (cell) { + remove(cell, 'data-mce-style'); + }); + }; + + var getDirection = function (element) { + return get$1(element, 'direction') === 'rtl' ? 'rtl' : 'ltr'; + }; + + var ltr$1 = { isRtl: constant(false) }; + var rtl$1 = { isRtl: constant(true) }; + var directionAt = function (element) { + var dir = getDirection(element); + return dir === 'rtl' ? rtl$1 : ltr$1; + }; + var Direction = { directionAt: directionAt }; + + var defaultTableToolbar = [ + 'tableprops', + 'tabledelete', + '|', + 'tableinsertrowbefore', + 'tableinsertrowafter', + 'tabledeleterow', + '|', + 'tableinsertcolbefore', + 'tableinsertcolafter', + 'tabledeletecol' + ]; + var defaultStyles = { + 'border-collapse': 'collapse', + 'width': '100%' + }; + var defaultAttributes = { border: '1' }; + var getDefaultAttributes = function (editor) { + return editor.getParam('table_default_attributes', defaultAttributes, 'object'); + }; + var getDefaultStyles = function (editor) { + return editor.getParam('table_default_styles', defaultStyles, 'object'); + }; + var hasTableResizeBars = function (editor) { + return editor.getParam('table_resize_bars', true, 'boolean'); + }; + var hasTabNavigation = function (editor) { + return editor.getParam('table_tab_navigation', true, 'boolean'); + }; + var hasAdvancedCellTab = function (editor) { + return editor.getParam('table_cell_advtab', true, 'boolean'); + }; + var hasAdvancedRowTab = function (editor) { + return editor.getParam('table_row_advtab', true, 'boolean'); + }; + var hasAdvancedTableTab = function (editor) { + return editor.getParam('table_advtab', true, 'boolean'); + }; + var hasAppearanceOptions = function (editor) { + return editor.getParam('table_appearance_options', true, 'boolean'); + }; + var hasTableGrid = function (editor) { + return editor.getParam('table_grid', true, 'boolean'); + }; + var shouldStyleWithCss = function (editor) { + return editor.getParam('table_style_by_css', false, 'boolean'); + }; + var getCellClassList = function (editor) { + return editor.getParam('table_cell_class_list', [], 'array'); + }; + var getRowClassList = function (editor) { + return editor.getParam('table_row_class_list', [], 'array'); + }; + var getTableClassList = function (editor) { + return editor.getParam('table_class_list', [], 'array'); + }; + var getColorPickerCallback = function (editor) { + return editor.getParam('color_picker_callback'); + }; + var isPixelsForced = function (editor) { + return editor.getParam('table_responsive_width') === false; + }; + var getCloneElements = function (editor) { + var cloneElements = editor.getParam('table_clone_elements'); + if (isString(cloneElements)) { + return Option.some(cloneElements.split(/[ ,]/)); + } else if (Array.isArray(cloneElements)) { + return Option.some(cloneElements); + } else { + return Option.none(); + } + }; + var hasObjectResizing = function (editor) { + var objectResizing = editor.getParam('object_resizing', true); + return objectResizing === 'table' || objectResizing; + }; + var getToolbar = function (editor) { + var toolbar = editor.getParam('table_toolbar', defaultTableToolbar); + if (toolbar === '' || toolbar === false) { + return []; + } else if (isString(toolbar)) { + return toolbar.split(/[ ,]/); + } else if (isArray(toolbar)) { + return toolbar; + } else { + return []; + } + }; + + var fireNewRow = function (editor, row) { + return editor.fire('newrow', { node: row }); + }; + var fireNewCell = function (editor, cell) { + return editor.fire('newcell', { node: cell }); + }; + var fireObjectResizeStart = function (editor, target, width, height) { + editor.fire('ObjectResizeStart', { + target: target, + width: width, + height: height + }); + }; + var fireObjectResized = function (editor, target, width, height) { + editor.fire('ObjectResized', { + target: target, + width: width, + height: height + }); + }; + + var TableActions = function (editor, lazyWire) { + var isTableBody = function (editor) { + return name(getBody$1(editor)) === 'table'; + }; + var lastRowGuard = function (table) { + var size = TableGridSize.getGridSize(table); + return isTableBody(editor) === false || size.rows() > 1; + }; + var lastColumnGuard = function (table) { + var size = TableGridSize.getGridSize(table); + return isTableBody(editor) === false || size.columns() > 1; + }; + var cloneFormats = getCloneElements(editor); + var execute = function (operation, guard, mutate, lazyWire) { + return function (table, target) { + removeDataStyle(table); + var wire = lazyWire(); + var doc = Element.fromDom(editor.getDoc()); + var direction = TableDirection(Direction.directionAt); + var generators = TableFill.cellOperations(mutate, doc, cloneFormats); + return guard(table) ? operation(wire, table, target, generators, direction).bind(function (result) { + each(result.newRows(), function (row) { + fireNewRow(editor, row.dom()); + }); + each(result.newCells(), function (cell) { + fireNewCell(editor, cell.dom()); + }); + return result.cursor().map(function (cell) { + var rng = editor.dom.createRng(); + rng.setStart(cell.dom(), 0); + rng.setEnd(cell.dom(), 0); + return rng; + }); + }) : Option.none(); + }; + }; + var deleteRow = execute(TableOperations.eraseRows, lastRowGuard, noop, lazyWire); + var deleteColumn = execute(TableOperations.eraseColumns, lastColumnGuard, noop, lazyWire); + var insertRowsBefore = execute(TableOperations.insertRowsBefore, always, noop, lazyWire); + var insertRowsAfter = execute(TableOperations.insertRowsAfter, always, noop, lazyWire); + var insertColumnsBefore = execute(TableOperations.insertColumnsBefore, always, CellMutations.halve, lazyWire); + var insertColumnsAfter = execute(TableOperations.insertColumnsAfter, always, CellMutations.halve, lazyWire); + var mergeCells = execute(TableOperations.mergeCells, always, noop, lazyWire); + var unmergeCells = execute(TableOperations.unmergeCells, always, noop, lazyWire); + var pasteRowsBefore = execute(TableOperations.pasteRowsBefore, always, noop, lazyWire); + var pasteRowsAfter = execute(TableOperations.pasteRowsAfter, always, noop, lazyWire); + var pasteCells = execute(TableOperations.pasteCells, always, noop, lazyWire); + return { + deleteRow: deleteRow, + deleteColumn: deleteColumn, + insertRowsBefore: insertRowsBefore, + insertRowsAfter: insertRowsAfter, + insertColumnsBefore: insertColumnsBefore, + insertColumnsAfter: insertColumnsAfter, + mergeCells: mergeCells, + unmergeCells: unmergeCells, + pasteRowsBefore: pasteRowsBefore, + pasteRowsAfter: pasteRowsAfter, + pasteCells: pasteCells + }; + }; + + var copyRows = function (table, target, generators) { + var list = DetailsList.fromTable(table); + var house = Warehouse.generate(list); + var details = onCells(house, target); + return details.map(function (selectedCells) { + var grid = Transitions.toGrid(house, generators, false); + var slicedGrid = grid.slice(selectedCells[0].row(), selectedCells[selectedCells.length - 1].row() + selectedCells[selectedCells.length - 1].rowspan()); + var slicedDetails = toDetailList(slicedGrid, generators); + return Redraw.copy(slicedDetails); + }); + }; + var CopyRows = { copyRows: copyRows }; + + var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools'); + + var getTDTHOverallStyle = function (dom, elm, name) { + var cells = dom.select('td,th', elm); + var firstChildStyle; + var checkChildren = function (firstChildStyle, elms) { + for (var i = 0; i < elms.length; i++) { + var currentStyle = dom.getStyle(elms[i], name); + if (typeof firstChildStyle === 'undefined') { + firstChildStyle = currentStyle; + } + if (firstChildStyle !== currentStyle) { + return ''; + } + } + return firstChildStyle; + }; + firstChildStyle = checkChildren(firstChildStyle, cells); + return firstChildStyle; + }; + var applyAlign = function (editor, elm, name) { + if (name) { + editor.formatter.apply('align' + name, {}, elm); + } + }; + var applyVAlign = function (editor, elm, name) { + if (name) { + editor.formatter.apply('valign' + name, {}, elm); + } + }; + var unApplyAlign = function (editor, elm) { + global$1.each('left center right'.split(' '), function (name) { + editor.formatter.remove('align' + name, {}, elm); + }); + }; + var unApplyVAlign = function (editor, elm) { + global$1.each('top middle bottom'.split(' '), function (name) { + editor.formatter.remove('valign' + name, {}, elm); + }); + }; + var Styles$1 = { + applyAlign: applyAlign, + applyVAlign: applyVAlign, + unApplyAlign: unApplyAlign, + unApplyVAlign: unApplyVAlign, + getTDTHOverallStyle: getTDTHOverallStyle + }; + + var buildListItems = function (inputList, itemCallback, startItems) { + var appendItems = function (values, output) { + output = output || []; + global$1.each(values, function (item) { + var menuItem = { text: item.text || item.title }; + if (item.menu) { + menuItem.menu = appendItems(item.menu); + } else { + menuItem.value = item.value; + if (itemCallback) { + itemCallback(menuItem); + } + } + output.push(menuItem); + }); + return output; + }; + return appendItems(inputList, startItems || []); + }; + function styleFieldHasFocus(e) { + return e.control.rootControl.find('#style')[0].getEl().isEqualNode(domGlobals.document.activeElement); + } + var syncAdvancedStyleFields = function (editor, evt) { + if (styleFieldHasFocus(evt)) { + updateAdvancedFields(editor, evt); + } else { + updateStyleField(editor, evt); + } + }; + var updateStyleField = function (editor, evt) { + var dom = editor.dom; + var rootControl = evt.control.rootControl; + var data = rootControl.toJSON(); + var css = dom.parseStyle(data.style); + css['border-style'] = data.borderStyle; + css['border-color'] = data.borderColor; + css['background-color'] = data.backgroundColor; + css.width = data.width ? addSizeSuffix(data.width) : ''; + css.height = data.height ? addSizeSuffix(data.height) : ''; + rootControl.find('#style').value(dom.serializeStyle(dom.parseStyle(dom.serializeStyle(css)))); + }; + var updateAdvancedFields = function (editor, evt) { + var dom = editor.dom; + var rootControl = evt.control.rootControl; + var data = rootControl.toJSON(); + var css = dom.parseStyle(data.style); + rootControl.find('#borderStyle').value(css['border-style'] || ''); + rootControl.find('#borderColor').value(css['border-color'] || ''); + rootControl.find('#backgroundColor').value(css['background-color'] || ''); + rootControl.find('#width').value(css.width || ''); + rootControl.find('#height').value(css.height || ''); + }; + var extractAdvancedStyles = function (dom, elm) { + var css = dom.parseStyle(dom.getAttrib(elm, 'style')); + var data = {}; + if (css['border-style']) { + data.borderStyle = css['border-style']; + } + if (css['border-color']) { + data.borderColor = css['border-color']; + } + if (css['background-color']) { + data.backgroundColor = css['background-color']; + } + data.style = dom.serializeStyle(css); + return data; + }; + var createStyleForm = function (editor) { + var createColorPickAction = function () { + var colorPickerCallback = getColorPickerCallback(editor); + if (colorPickerCallback) { + return function (evt) { + return colorPickerCallback.call(editor, function (value) { + evt.control.value(value).fire('change'); + }, evt.control.value()); + }; + } + }; + return { + title: 'Advanced', + type: 'form', + defaults: { onchange: curry(updateStyleField, editor) }, + items: [ + { + label: 'Style', + name: 'style', + type: 'textbox', + onchange: curry(updateAdvancedFields, editor) + }, + { + type: 'form', + padding: 0, + formItemDefaults: { + layout: 'grid', + alignH: [ + 'start', + 'right' + ] + }, + defaults: { size: 7 }, + items: [ + { + label: 'Border style', + type: 'listbox', + name: 'borderStyle', + width: 90, + onselect: curry(updateStyleField, editor), + values: [ + { + text: 'Select...', + value: '' + }, + { + text: 'Solid', + value: 'solid' + }, + { + text: 'Dotted', + value: 'dotted' + }, + { + text: 'Dashed', + value: 'dashed' + }, + { + text: 'Double', + value: 'double' + }, + { + text: 'Groove', + value: 'groove' + }, + { + text: 'Ridge', + value: 'ridge' + }, + { + text: 'Inset', + value: 'inset' + }, + { + text: 'Outset', + value: 'outset' + }, + { + text: 'None', + value: 'none' + }, + { + text: 'Hidden', + value: 'hidden' + } + ] + }, + { + label: 'Border color', + type: 'colorbox', + name: 'borderColor', + onaction: createColorPickAction() + }, + { + label: 'Background color', + type: 'colorbox', + name: 'backgroundColor', + onaction: createColorPickAction() + } + ] + } + ] + }; + }; + var Helpers = { + createStyleForm: createStyleForm, + buildListItems: buildListItems, + updateStyleField: updateStyleField, + extractAdvancedStyles: extractAdvancedStyles, + updateAdvancedFields: updateAdvancedFields, + syncAdvancedStyleFields: syncAdvancedStyleFields + }; + + var updateStyles = function (elm, cssText) { + delete elm.dataset.mceStyle; + elm.style.cssText += ';' + cssText; + }; + var extractDataFromElement = function (editor, elm) { + var dom = editor.dom; + var data = { + width: dom.getStyle(elm, 'width') || dom.getAttrib(elm, 'width'), + height: dom.getStyle(elm, 'height') || dom.getAttrib(elm, 'height'), + scope: dom.getAttrib(elm, 'scope'), + class: dom.getAttrib(elm, 'class'), + type: elm.nodeName.toLowerCase(), + style: '', + align: '', + valign: '' + }; + global$1.each('left center right'.split(' '), function (name) { + if (editor.formatter.matchNode(elm, 'align' + name)) { + data.align = name; + } + }); + global$1.each('top middle bottom'.split(' '), function (name) { + if (editor.formatter.matchNode(elm, 'valign' + name)) { + data.valign = name; + } + }); + if (hasAdvancedCellTab(editor)) { + global$1.extend(data, Helpers.extractAdvancedStyles(dom, elm)); + } + return data; + }; + var onSubmitCellForm = function (editor, cells, evt) { + var dom = editor.dom; + var data; + function setAttrib(elm, name, value) { + if (cells.length === 1 || value) { + dom.setAttrib(elm, name, value); + } + } + function setStyle(elm, name, value) { + if (cells.length === 1 || value) { + dom.setStyle(elm, name, value); + } + } + if (hasAdvancedCellTab(editor)) { + Helpers.syncAdvancedStyleFields(editor, evt); + } + data = evt.control.rootControl.toJSON(); + editor.undoManager.transact(function () { + global$1.each(cells, function (cellElm) { + setAttrib(cellElm, 'scope', data.scope); + if (cells.length === 1) { + setAttrib(cellElm, 'style', data.style); + } else { + updateStyles(cellElm, data.style); + } + setAttrib(cellElm, 'class', data.class); + setStyle(cellElm, 'width', addSizeSuffix(data.width)); + setStyle(cellElm, 'height', addSizeSuffix(data.height)); + if (data.type && cellElm.nodeName.toLowerCase() !== data.type) { + cellElm = dom.rename(cellElm, data.type); + } + if (cells.length === 1) { + Styles$1.unApplyAlign(editor, cellElm); + Styles$1.unApplyVAlign(editor, cellElm); + } + if (data.align) { + Styles$1.applyAlign(editor, cellElm, data.align); + } + if (data.valign) { + Styles$1.applyVAlign(editor, cellElm, data.valign); + } + }); + editor.focus(); + }); + }; + var open = function (editor) { + var cellElm, data, classListCtrl, cells = []; + cells = editor.dom.select('td[data-mce-selected],th[data-mce-selected]'); + cellElm = editor.dom.getParent(editor.selection.getStart(), 'td,th'); + if (!cells.length && cellElm) { + cells.push(cellElm); + } + cellElm = cellElm || cells[0]; + if (!cellElm) { + return; + } + if (cells.length > 1) { + data = { + width: '', + height: '', + scope: '', + class: '', + align: '', + valign: '', + style: '', + type: cellElm.nodeName.toLowerCase() + }; + } else { + data = extractDataFromElement(editor, cellElm); + } + if (getCellClassList(editor).length > 0) { + classListCtrl = { + name: 'class', + type: 'listbox', + label: 'Class', + values: Helpers.buildListItems(getCellClassList(editor), function (item) { + if (item.value) { + item.textStyle = function () { + return editor.formatter.getCssText({ + block: 'td', + classes: [item.value] + }); + }; + } + }) + }; + } + var generalCellForm = { + type: 'form', + layout: 'flex', + direction: 'column', + labelGapCalc: 'children', + padding: 0, + items: [ + { + type: 'form', + layout: 'grid', + columns: 2, + labelGapCalc: false, + padding: 0, + defaults: { + type: 'textbox', + maxWidth: 50 + }, + items: [ + { + label: 'Width', + name: 'width', + onchange: curry(Helpers.updateStyleField, editor) + }, + { + label: 'Height', + name: 'height', + onchange: curry(Helpers.updateStyleField, editor) + }, + { + label: 'Cell type', + name: 'type', + type: 'listbox', + text: 'None', + minWidth: 90, + maxWidth: null, + values: [ + { + text: 'Cell', + value: 'td' + }, + { + text: 'Header cell', + value: 'th' + } + ] + }, + { + label: 'Scope', + name: 'scope', + type: 'listbox', + text: 'None', + minWidth: 90, + maxWidth: null, + values: [ + { + text: 'None', + value: '' + }, + { + text: 'Row', + value: 'row' + }, + { + text: 'Column', + value: 'col' + }, + { + text: 'Row group', + value: 'rowgroup' + }, + { + text: 'Column group', + value: 'colgroup' + } + ] + }, + { + label: 'H Align', + name: 'align', + type: 'listbox', + text: 'None', + minWidth: 90, + maxWidth: null, + values: [ + { + text: 'None', + value: '' + }, + { + text: 'Left', + value: 'left' + }, + { + text: 'Center', + value: 'center' + }, + { + text: 'Right', + value: 'right' + } + ] + }, + { + label: 'V Align', + name: 'valign', + type: 'listbox', + text: 'None', + minWidth: 90, + maxWidth: null, + values: [ + { + text: 'None', + value: '' + }, + { + text: 'Top', + value: 'top' + }, + { + text: 'Middle', + value: 'middle' + }, + { + text: 'Bottom', + value: 'bottom' + } + ] + } + ] + }, + classListCtrl + ] + }; + if (hasAdvancedCellTab(editor)) { + editor.windowManager.open({ + title: 'Cell properties', + bodyType: 'tabpanel', + data: data, + body: [ + { + title: 'General', + type: 'form', + items: generalCellForm + }, + Helpers.createStyleForm(editor) + ], + onsubmit: curry(onSubmitCellForm, editor, cells) + }); + } else { + editor.windowManager.open({ + title: 'Cell properties', + data: data, + body: generalCellForm, + onsubmit: curry(onSubmitCellForm, editor, cells) + }); + } + }; + var CellDialog = { open: open }; + + var extractDataFromElement$1 = function (editor, elm) { + var dom = editor.dom; + var data = { + height: dom.getStyle(elm, 'height') || dom.getAttrib(elm, 'height'), + scope: dom.getAttrib(elm, 'scope'), + class: dom.getAttrib(elm, 'class'), + align: '', + style: '', + type: elm.parentNode.nodeName.toLowerCase() + }; + global$1.each('left center right'.split(' '), function (name) { + if (editor.formatter.matchNode(elm, 'align' + name)) { + data.align = name; + } + }); + if (hasAdvancedRowTab(editor)) { + global$1.extend(data, Helpers.extractAdvancedStyles(dom, elm)); + } + return data; + }; + var switchRowType = function (dom, rowElm, toType) { + var tableElm = dom.getParent(rowElm, 'table'); + var oldParentElm = rowElm.parentNode; + var parentElm = dom.select(toType, tableElm)[0]; + if (!parentElm) { + parentElm = dom.create(toType); + if (tableElm.firstChild) { + if (tableElm.firstChild.nodeName === 'CAPTION') { + dom.insertAfter(parentElm, tableElm.firstChild); + } else { + tableElm.insertBefore(parentElm, tableElm.firstChild); + } + } else { + tableElm.appendChild(parentElm); + } + } + parentElm.appendChild(rowElm); + if (!oldParentElm.hasChildNodes()) { + dom.remove(oldParentElm); + } + }; + function onSubmitRowForm(editor, rows, oldData, evt) { + var dom = editor.dom; + function setAttrib(elm, name, value) { + if (rows.length === 1 || value) { + dom.setAttrib(elm, name, value); + } + } + function setStyle(elm, name, value) { + if (rows.length === 1 || value) { + dom.setStyle(elm, name, value); + } + } + if (hasAdvancedRowTab(editor)) { + Helpers.syncAdvancedStyleFields(editor, evt); + } + var data = evt.control.rootControl.toJSON(); + editor.undoManager.transact(function () { + global$1.each(rows, function (rowElm) { + setAttrib(rowElm, 'scope', data.scope); + setAttrib(rowElm, 'style', data.style); + setAttrib(rowElm, 'class', data.class); + setStyle(rowElm, 'height', addSizeSuffix(data.height)); + if (data.type !== rowElm.parentNode.nodeName.toLowerCase()) { + switchRowType(editor.dom, rowElm, data.type); + } + if (data.align !== oldData.align) { + Styles$1.unApplyAlign(editor, rowElm); + Styles$1.applyAlign(editor, rowElm, data.align); + } + }); + editor.focus(); + }); + } + var open$1 = function (editor) { + var dom = editor.dom; + var tableElm, cellElm, rowElm, classListCtrl, data; + var rows = []; + var generalRowForm; + tableElm = dom.getParent(editor.selection.getStart(), 'table'); + cellElm = dom.getParent(editor.selection.getStart(), 'td,th'); + global$1.each(tableElm.rows, function (row) { + global$1.each(row.cells, function (cell) { + if (dom.getAttrib(cell, 'data-mce-selected') || cell === cellElm) { + rows.push(row); + return false; + } + }); + }); + rowElm = rows[0]; + if (!rowElm) { + return; + } + if (rows.length > 1) { + data = { + height: '', + scope: '', + style: '', + class: '', + align: '', + type: rowElm.parentNode.nodeName.toLowerCase() + }; + } else { + data = extractDataFromElement$1(editor, rowElm); + } + if (getRowClassList(editor).length > 0) { + classListCtrl = { + name: 'class', + type: 'listbox', + label: 'Class', + values: Helpers.buildListItems(getRowClassList(editor), function (item) { + if (item.value) { + item.textStyle = function () { + return editor.formatter.getCssText({ + block: 'tr', + classes: [item.value] + }); + }; + } + }) + }; + } + generalRowForm = { + type: 'form', + columns: 2, + padding: 0, + defaults: { type: 'textbox' }, + items: [ + { + type: 'listbox', + name: 'type', + label: 'Row type', + text: 'Header', + maxWidth: null, + values: [ + { + text: 'Header', + value: 'thead' + }, + { + text: 'Body', + value: 'tbody' + }, + { + text: 'Footer', + value: 'tfoot' + } + ] + }, + { + type: 'listbox', + name: 'align', + label: 'Alignment', + text: 'None', + maxWidth: null, + values: [ + { + text: 'None', + value: '' + }, + { + text: 'Left', + value: 'left' + }, + { + text: 'Center', + value: 'center' + }, + { + text: 'Right', + value: 'right' + } + ] + }, + { + label: 'Height', + name: 'height' + }, + classListCtrl + ] + }; + if (hasAdvancedRowTab(editor)) { + editor.windowManager.open({ + title: 'Row properties', + data: data, + bodyType: 'tabpanel', + body: [ + { + title: 'General', + type: 'form', + items: generalRowForm + }, + Helpers.createStyleForm(editor) + ], + onsubmit: curry(onSubmitRowForm, editor, rows, data) + }); + } else { + editor.windowManager.open({ + title: 'Row properties', + data: data, + body: generalRowForm, + onsubmit: curry(onSubmitRowForm, editor, rows, data) + }); + } + }; + var RowDialog = { open: open$1 }; + + var global$2 = tinymce.util.Tools.resolve('tinymce.Env'); + + var DefaultRenderOptions = { + styles: { + 'border-collapse': 'collapse', + 'width': '100%' + }, + attributes: { border: '1' }, + percentages: true + }; + var makeTable = function () { + return Element.fromTag('table'); + }; + var tableBody = function () { + return Element.fromTag('tbody'); + }; + var tableRow = function () { + return Element.fromTag('tr'); + }; + var tableHeaderCell = function () { + return Element.fromTag('th'); + }; + var tableCell = function () { + return Element.fromTag('td'); + }; + var render$1 = function (rows, columns, rowHeaders, columnHeaders, renderOpts) { + if (renderOpts === void 0) { + renderOpts = DefaultRenderOptions; + } + var table = makeTable(); + setAll$1(table, renderOpts.styles); + setAll(table, renderOpts.attributes); + var tbody = tableBody(); + append(table, tbody); + var trs = []; + for (var i = 0; i < rows; i++) { + var tr = tableRow(); + for (var j = 0; j < columns; j++) { + var td = i < rowHeaders || j < columnHeaders ? tableHeaderCell() : tableCell(); + if (j < columnHeaders) { + set(td, 'scope', 'row'); + } + if (i < rowHeaders) { + set(td, 'scope', 'col'); + } + append(td, Element.fromTag('br')); + if (renderOpts.percentages) { + set$1(td, 'width', 100 / columns + '%'); + } + append(tr, td); + } + trs.push(tr); + } + append$1(tbody, trs); + return table; + }; + + var get$7 = function (element) { + return element.dom().innerHTML; + }; + var getOuter$2 = function (element) { + var container = Element.fromTag('div'); + var clone = Element.fromDom(element.dom().cloneNode(true)); + append(container, clone); + return get$7(container); + }; + + var placeCaretInCell = function (editor, cell) { + editor.selection.select(cell.dom(), true); + editor.selection.collapse(true); + }; + var selectFirstCellInTable = function (editor, tableElm) { + descendant$1(tableElm, 'td,th').each(curry(placeCaretInCell, editor)); + }; + var fireEvents = function (editor, table) { + each(descendants$1(table, 'tr'), function (row) { + fireNewRow(editor, row.dom()); + each(descendants$1(row, 'th,td'), function (cell) { + fireNewCell(editor, cell.dom()); + }); + }); + }; + var isPercentage = function (width) { + return isString(width) && width.indexOf('%') !== -1; + }; + var insert$1 = function (editor, columns, rows) { + var defaultStyles = getDefaultStyles(editor); + var options = { + styles: defaultStyles, + attributes: getDefaultAttributes(editor), + percentages: isPercentage(defaultStyles.width) && !isPixelsForced(editor) + }; + var table = render$1(rows, columns, 0, 0, options); + set(table, 'data-mce-id', '__mce'); + var html = getOuter$2(table); + editor.insertContent(html); + return descendant$1(getBody$1(editor), 'table[data-mce-id="__mce"]').map(function (table) { + if (isPixelsForced(editor)) { + set$1(table, 'width', get$1(table, 'width')); + } + remove(table, 'data-mce-id'); + fireEvents(editor, table); + selectFirstCellInTable(editor, table); + return table.dom(); + }).getOr(null); + }; + var InsertTable = { insert: insert$1 }; + + function styleTDTH(dom, elm, name, value) { + if (elm.tagName === 'TD' || elm.tagName === 'TH') { + dom.setStyle(elm, name, value); + } else { + if (elm.children) { + for (var i = 0; i < elm.children.length; i++) { + styleTDTH(dom, elm.children[i], name, value); + } + } + } + } + var extractDataFromElement$2 = function (editor, tableElm) { + var dom = editor.dom; + var data = { + width: dom.getStyle(tableElm, 'width') || dom.getAttrib(tableElm, 'width'), + height: dom.getStyle(tableElm, 'height') || dom.getAttrib(tableElm, 'height'), + cellspacing: dom.getStyle(tableElm, 'border-spacing') || dom.getAttrib(tableElm, 'cellspacing'), + cellpadding: dom.getAttrib(tableElm, 'data-mce-cell-padding') || dom.getAttrib(tableElm, 'cellpadding') || Styles$1.getTDTHOverallStyle(editor.dom, tableElm, 'padding'), + border: dom.getAttrib(tableElm, 'data-mce-border') || dom.getAttrib(tableElm, 'border') || Styles$1.getTDTHOverallStyle(editor.dom, tableElm, 'border'), + borderColor: dom.getAttrib(tableElm, 'data-mce-border-color'), + caption: !!dom.select('caption', tableElm)[0], + class: dom.getAttrib(tableElm, 'class') + }; + global$1.each('left center right'.split(' '), function (name) { + if (editor.formatter.matchNode(tableElm, 'align' + name)) { + data.align = name; + } + }); + if (hasAdvancedTableTab(editor)) { + global$1.extend(data, Helpers.extractAdvancedStyles(dom, tableElm)); + } + return data; + }; + var applyDataToElement = function (editor, tableElm, data) { + var dom = editor.dom; + var attrs = {}; + var styles = {}; + attrs.class = data.class; + styles.height = addSizeSuffix(data.height); + if (dom.getAttrib(tableElm, 'width') && !shouldStyleWithCss(editor)) { + attrs.width = removePxSuffix(data.width); + } else { + styles.width = addSizeSuffix(data.width); + } + if (shouldStyleWithCss(editor)) { + styles['border-width'] = addSizeSuffix(data.border); + styles['border-spacing'] = addSizeSuffix(data.cellspacing); + global$1.extend(attrs, { + 'data-mce-border-color': data.borderColor, + 'data-mce-cell-padding': data.cellpadding, + 'data-mce-border': data.border + }); + } else { + global$1.extend(attrs, { + border: data.border, + cellpadding: data.cellpadding, + cellspacing: data.cellspacing + }); + } + if (shouldStyleWithCss(editor)) { + if (tableElm.children) { + for (var i = 0; i < tableElm.children.length; i++) { + styleTDTH(dom, tableElm.children[i], { + 'border-width': addSizeSuffix(data.border), + 'border-color': data.borderColor, + 'padding': addSizeSuffix(data.cellpadding) + }); + } + } + } + if (data.style) { + global$1.extend(styles, dom.parseStyle(data.style)); + } else { + styles = global$1.extend({}, dom.parseStyle(dom.getAttrib(tableElm, 'style')), styles); + } + attrs.style = dom.serializeStyle(styles); + dom.setAttribs(tableElm, attrs); + }; + var onSubmitTableForm = function (editor, tableElm, evt) { + var dom = editor.dom; + var captionElm; + var data; + if (hasAdvancedTableTab(editor)) { + Helpers.syncAdvancedStyleFields(editor, evt); + } + data = evt.control.rootControl.toJSON(); + if (data.class === false) { + delete data.class; + } + editor.undoManager.transact(function () { + if (!tableElm) { + tableElm = InsertTable.insert(editor, data.cols || 1, data.rows || 1); + } + applyDataToElement(editor, tableElm, data); + captionElm = dom.select('caption', tableElm)[0]; + if (captionElm && !data.caption) { + dom.remove(captionElm); + } + if (!captionElm && data.caption) { + captionElm = dom.create('caption'); + captionElm.innerHTML = !global$2.ie ? '
' : '\xA0'; + tableElm.insertBefore(captionElm, tableElm.firstChild); + } + Styles$1.unApplyAlign(editor, tableElm); + if (data.align) { + Styles$1.applyAlign(editor, tableElm, data.align); + } + editor.focus(); + editor.addVisual(); + }); + }; + var open$2 = function (editor, isProps) { + var dom = editor.dom; + var tableElm, colsCtrl, rowsCtrl, classListCtrl, data = {}, generalTableForm; + if (isProps === true) { + tableElm = dom.getParent(editor.selection.getStart(), 'table'); + if (tableElm) { + data = extractDataFromElement$2(editor, tableElm); + } + } else { + colsCtrl = { + label: 'Cols', + name: 'cols' + }; + rowsCtrl = { + label: 'Rows', + name: 'rows' + }; + } + if (getTableClassList(editor).length > 0) { + if (data.class) { + data.class = data.class.replace(/\s*mce\-item\-table\s*/g, ''); + } + classListCtrl = { + name: 'class', + type: 'listbox', + label: 'Class', + values: Helpers.buildListItems(getTableClassList(editor), function (item) { + if (item.value) { + item.textStyle = function () { + return editor.formatter.getCssText({ + block: 'table', + classes: [item.value] + }); + }; + } + }) + }; + } + generalTableForm = { + type: 'form', + layout: 'flex', + direction: 'column', + labelGapCalc: 'children', + padding: 0, + items: [ + { + type: 'form', + labelGapCalc: false, + padding: 0, + layout: 'grid', + columns: 2, + defaults: { + type: 'textbox', + maxWidth: 50 + }, + items: hasAppearanceOptions(editor) ? [ + colsCtrl, + rowsCtrl, + { + label: 'Width', + name: 'width', + onchange: curry(Helpers.updateStyleField, editor) + }, + { + label: 'Height', + name: 'height', + onchange: curry(Helpers.updateStyleField, editor) + }, + { + label: 'Cell spacing', + name: 'cellspacing' + }, + { + label: 'Cell padding', + name: 'cellpadding' + }, + { + label: 'Border', + name: 'border' + }, + { + label: 'Caption', + name: 'caption', + type: 'checkbox' + } + ] : [ + colsCtrl, + rowsCtrl, + { + label: 'Width', + name: 'width', + onchange: curry(Helpers.updateStyleField, editor) + }, + { + label: 'Height', + name: 'height', + onchange: curry(Helpers.updateStyleField, editor) + } + ] + }, + { + label: 'Alignment', + name: 'align', + type: 'listbox', + text: 'None', + values: [ + { + text: 'None', + value: '' + }, + { + text: 'Left', + value: 'left' + }, + { + text: 'Center', + value: 'center' + }, + { + text: 'Right', + value: 'right' + } + ] + }, + classListCtrl + ] + }; + if (hasAdvancedTableTab(editor)) { + editor.windowManager.open({ + title: 'Table properties', + data: data, + bodyType: 'tabpanel', + body: [ + { + title: 'General', + type: 'form', + items: generalTableForm + }, + Helpers.createStyleForm(editor) + ], + onsubmit: curry(onSubmitTableForm, editor, tableElm) + }); + } else { + editor.windowManager.open({ + title: 'Table properties', + data: data, + body: generalTableForm, + onsubmit: curry(onSubmitTableForm, editor, tableElm) + }); + } + }; + var TableDialog = { open: open$2 }; + + var each$3 = global$1.each; + var registerCommands = function (editor, actions, cellSelection, selections, clipboardRows) { + var isRoot = getIsRoot(editor); + var eraseTable = function () { + getSelectionStartCell().orThunk(getSelectionStartCaption).each(function (cellOrCaption) { + var table = TableLookup.table(cellOrCaption, isRoot); + table.filter(not(isRoot)).each(function (table) { + var cursor = Element.fromText(''); + after(table, cursor); + remove$2(table); + var rng = editor.dom.createRng(); + rng.setStart(cursor.dom(), 0); + rng.setEnd(cursor.dom(), 0); + editor.selection.setRng(rng); + }); + }); + }; + var getSelectionStartFromSelector = function (selector) { + return function () { + return Option.from(editor.dom.getParent(editor.selection.getStart(), selector)).map(Element.fromDom); + }; + }; + var getSelectionStartCaption = getSelectionStartFromSelector('caption'); + var getSelectionStartCell = getSelectionStartFromSelector('th,td'); + var getTableFromCell = function (cell) { + return TableLookup.table(cell, isRoot); + }; + var getSize = function (table) { + return { + width: getPixelWidth$1(table.dom()), + height: getPixelWidth$1(table.dom()) + }; + }; + var resizeChange = function (editor, oldSize, table) { + var newSize = getSize(table); + if (oldSize.width !== newSize.width || oldSize.height !== newSize.height) { + fireObjectResizeStart(editor, table.dom(), oldSize.width, oldSize.height); + fireObjectResized(editor, table.dom(), newSize.width, newSize.height); + } + }; + var actOnSelection = function (execute) { + getSelectionStartCell().each(function (cell) { + getTableFromCell(cell).each(function (table) { + var targets = TableTargets.forMenu(selections, table, cell); + var beforeSize = getSize(table); + execute(table, targets).each(function (rng) { + resizeChange(editor, beforeSize, table); + editor.selection.setRng(rng); + editor.focus(); + cellSelection.clear(table); + removeDataStyle(table); + }); + }); + }); + }; + var copyRowSelection = function (execute) { + return getSelectionStartCell().bind(function (cell) { + return getTableFromCell(cell).bind(function (table) { + var doc = Element.fromDom(editor.getDoc()); + var targets = TableTargets.forMenu(selections, table, cell); + var generators = TableFill.cellOperations(noop, doc, Option.none()); + return CopyRows.copyRows(table, targets, generators); + }); + }); + }; + var pasteOnSelection = function (execute) { + clipboardRows.get().each(function (rows) { + var clonedRows = map(rows, function (row) { + return deep(row); + }); + getSelectionStartCell().each(function (cell) { + getTableFromCell(cell).each(function (table) { + var doc = Element.fromDom(editor.getDoc()); + var generators = TableFill.paste(doc); + var targets = TableTargets.pasteRows(selections, table, cell, clonedRows, generators); + execute(table, targets).each(function (rng) { + editor.selection.setRng(rng); + editor.focus(); + cellSelection.clear(table); + }); + }); + }); + }); + }; + each$3({ + mceTableSplitCells: function () { + actOnSelection(actions.unmergeCells); + }, + mceTableMergeCells: function () { + actOnSelection(actions.mergeCells); + }, + mceTableInsertRowBefore: function () { + actOnSelection(actions.insertRowsBefore); + }, + mceTableInsertRowAfter: function () { + actOnSelection(actions.insertRowsAfter); + }, + mceTableInsertColBefore: function () { + actOnSelection(actions.insertColumnsBefore); + }, + mceTableInsertColAfter: function () { + actOnSelection(actions.insertColumnsAfter); + }, + mceTableDeleteCol: function () { + actOnSelection(actions.deleteColumn); + }, + mceTableDeleteRow: function () { + actOnSelection(actions.deleteRow); + }, + mceTableCutRow: function (grid) { + clipboardRows.set(copyRowSelection()); + actOnSelection(actions.deleteRow); + }, + mceTableCopyRow: function (grid) { + clipboardRows.set(copyRowSelection()); + }, + mceTablePasteRowBefore: function (grid) { + pasteOnSelection(actions.pasteRowsBefore); + }, + mceTablePasteRowAfter: function (grid) { + pasteOnSelection(actions.pasteRowsAfter); + }, + mceTableDelete: eraseTable + }, function (func, name) { + editor.addCommand(name, func); + }); + each$3({ + mceInsertTable: curry(TableDialog.open, editor), + mceTableProps: curry(TableDialog.open, editor, true), + mceTableRowProps: curry(RowDialog.open, editor), + mceTableCellProps: curry(CellDialog.open, editor) + }, function (func, name) { + editor.addCommand(name, function (ui, val) { + func(val); + }); + }); + }; + var Commands = { registerCommands: registerCommands }; + + var only = function (element) { + var parent = Option.from(element.dom().documentElement).map(Element.fromDom).getOr(element); + return { + parent: constant(parent), + view: constant(element), + origin: constant(Position(0, 0)) + }; + }; + var detached = function (editable, chrome) { + var origin = function () { + return absolute(chrome); + }; + return { + parent: constant(chrome), + view: constant(editable), + origin: origin + }; + }; + var body$1 = function (editable, chrome) { + return { + parent: constant(chrome), + view: constant(editable), + origin: constant(Position(0, 0)) + }; + }; + var ResizeWire = { + only: only, + detached: detached, + body: body$1 + }; + + var Event = function (fields) { + var struct = Immutable.apply(null, fields); + var handlers = []; + var bind = function (handler) { + if (handler === undefined) { + throw new Error('Event bind error: undefined handler'); + } + handlers.push(handler); + }; + var unbind = function (handler) { + handlers = filter(handlers, function (h) { + return h !== handler; + }); + }; + var trigger = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var event = struct.apply(null, args); + each(handlers, function (handler) { + handler(event); + }); + }; + return { + bind: bind, + unbind: unbind, + trigger: trigger + }; + }; + + var create$1 = function (typeDefs) { + var registry = map$1(typeDefs, function (event) { + return { + bind: event.bind, + unbind: event.unbind + }; + }); + var trigger = map$1(typeDefs, function (event) { + return event.trigger; + }); + return { + registry: registry, + trigger: trigger + }; + }; + var Events = { create: create$1 }; + + var mkEvent = function (target, x, y, stop, prevent, kill, raw) { + return { + target: constant(target), + x: constant(x), + y: constant(y), + stop: stop, + prevent: prevent, + kill: kill, + raw: constant(raw) + }; + }; + var handle = function (filter, handler) { + return function (rawEvent) { + if (!filter(rawEvent)) { + return; + } + var target = Element.fromDom(rawEvent.target); + var stop = function () { + rawEvent.stopPropagation(); + }; + var prevent = function () { + rawEvent.preventDefault(); + }; + var kill = compose(prevent, stop); + var evt = mkEvent(target, rawEvent.clientX, rawEvent.clientY, stop, prevent, kill, rawEvent); + handler(evt); + }; + }; + var binder = function (element, event, filter, handler, useCapture) { + var wrapped = handle(filter, handler); + element.dom().addEventListener(event, wrapped, useCapture); + return { unbind: curry(unbind, element, event, wrapped, useCapture) }; + }; + var bind$1 = function (element, event, filter, handler) { + return binder(element, event, filter, handler, false); + }; + var unbind = function (element, event, handler, useCapture) { + element.dom().removeEventListener(event, handler, useCapture); + }; + + var filter$1 = constant(true); + var bind$2 = function (element, event, handler) { + return bind$1(element, event, filter$1, handler); + }; + + var hasOwnProperty = Object.prototype.hasOwnProperty; + var shallow$1 = function (old, nu) { + return nu; + }; + var baseMerge = function (merger) { + return function () { + var objects = new Array(arguments.length); + for (var i = 0; i < objects.length; i++) { + objects[i] = arguments[i]; + } + if (objects.length === 0) { + throw new Error('Can\'t merge zero objects'); + } + var ret = {}; + for (var j = 0; j < objects.length; j++) { + var curObject = objects[j]; + for (var key in curObject) { + if (hasOwnProperty.call(curObject, key)) { + ret[key] = merger(ret[key], curObject[key]); + } + } + } + return ret; + }; + }; + var merge$3 = baseMerge(shallow$1); + + var styles$1 = css('ephox-dragster'); + var Styles$2 = { resolve: styles$1.resolve }; + + var Blocker = function (options) { + var settings = merge$3({ layerClass: Styles$2.resolve('blocker') }, options); + var div = Element.fromTag('div'); + set(div, 'role', 'presentation'); + setAll$1(div, { + position: 'fixed', + left: '0px', + top: '0px', + width: '100%', + height: '100%' + }); + add$2(div, Styles$2.resolve('blocker')); + add$2(div, settings.layerClass); + var element = function () { + return div; + }; + var destroy = function () { + remove$2(div); + }; + return { + element: element, + destroy: destroy + }; + }; + + var DragMode = exactly([ + 'compare', + 'extract', + 'mutate', + 'sink' + ]); + var DragSink = exactly([ + 'element', + 'start', + 'stop', + 'destroy' + ]); + var DragApi = exactly([ + 'forceDrop', + 'drop', + 'move', + 'delayDrop' + ]); + + var compare = function (old, nu) { + return Position(nu.left() - old.left(), nu.top() - old.top()); + }; + var extract$1 = function (event) { + return Option.some(Position(event.x(), event.y())); + }; + var mutate = function (mutation, info) { + mutation.mutate(info.left(), info.top()); + }; + var sink = function (dragApi, settings) { + var blocker = Blocker(settings); + var mdown = bind$2(blocker.element(), 'mousedown', dragApi.forceDrop); + var mup = bind$2(blocker.element(), 'mouseup', dragApi.drop); + var mmove = bind$2(blocker.element(), 'mousemove', dragApi.move); + var mout = bind$2(blocker.element(), 'mouseout', dragApi.delayDrop); + var destroy = function () { + blocker.destroy(); + mup.unbind(); + mmove.unbind(); + mout.unbind(); + mdown.unbind(); + }; + var start = function (parent) { + append(parent, blocker.element()); + }; + var stop = function () { + remove$2(blocker.element()); + }; + return DragSink({ + element: blocker.element, + start: start, + stop: stop, + destroy: destroy + }); + }; + var MouseDrag = DragMode({ + compare: compare, + extract: extract$1, + sink: sink, + mutate: mutate + }); + + var last$2 = function (fn, rate) { + var timer = null; + var cancel = function () { + if (timer !== null) { + domGlobals.clearTimeout(timer); + timer = null; + } + }; + var throttle = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + if (timer !== null) { + domGlobals.clearTimeout(timer); + } + timer = domGlobals.setTimeout(function () { + fn.apply(null, args); + timer = null; + }, rate); + }; + return { + cancel: cancel, + throttle: throttle + }; + }; + + function InDrag () { + var previous = Option.none(); + var reset = function () { + previous = Option.none(); + }; + var update = function (mode, nu) { + var result = previous.map(function (old) { + return mode.compare(old, nu); + }); + previous = Option.some(nu); + return result; + }; + var onEvent = function (event, mode) { + var dataOption = mode.extract(event); + dataOption.each(function (data) { + var offset = update(mode, data); + offset.each(function (d) { + events.trigger.move(d); + }); + }); + }; + var events = Events.create({ move: Event(['info']) }); + return { + onEvent: onEvent, + reset: reset, + events: events.registry + }; + } + + function NoDrag () { + return { + onEvent: noop, + reset: noop + }; + } + + function Movement () { + var noDragState = NoDrag(); + var inDragState = InDrag(); + var dragState = noDragState; + var on = function () { + dragState.reset(); + dragState = inDragState; + }; + var off = function () { + dragState.reset(); + dragState = noDragState; + }; + var onEvent = function (event, mode) { + dragState.onEvent(event, mode); + }; + var isOn = function () { + return dragState === inDragState; + }; + return { + on: on, + off: off, + isOn: isOn, + onEvent: onEvent, + events: inDragState.events + }; + } + + var setup = function (mutation, mode, settings) { + var active = false; + var events = Events.create({ + start: Event([]), + stop: Event([]) + }); + var movement = Movement(); + var drop = function () { + sink.stop(); + if (movement.isOn()) { + movement.off(); + events.trigger.stop(); + } + }; + var throttledDrop = last$2(drop, 200); + var go = function (parent) { + sink.start(parent); + movement.on(); + events.trigger.start(); + }; + var mousemove = function (event) { + throttledDrop.cancel(); + movement.onEvent(event, mode); + }; + movement.events.move.bind(function (event) { + mode.mutate(mutation, event.info()); + }); + var on = function () { + active = true; + }; + var off = function () { + active = false; + }; + var runIfActive = function (f) { + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + if (active) { + f.apply(null, args); + } + }; + }; + var sink = mode.sink(DragApi({ + forceDrop: drop, + drop: runIfActive(drop), + move: runIfActive(mousemove), + delayDrop: runIfActive(throttledDrop.throttle) + }), settings); + var destroy = function () { + sink.destroy(); + }; + return { + element: sink.element, + go: go, + on: on, + off: off, + destroy: destroy, + events: events.registry + }; + }; + var Dragging = { setup: setup }; + + var transform$1 = function (mutation, settings) { + if (settings === void 0) { + settings = {}; + } + var mode = settings.mode !== undefined ? settings.mode : MouseDrag; + return Dragging.setup(mutation, mode, settings); + }; + var Dragger = { transform: transform$1 }; + + var Mutation = function () { + var events = Events.create({ + drag: Event([ + 'xDelta', + 'yDelta' + ]) + }); + var mutate = function (x, y) { + events.trigger.drag(x, y); + }; + return { + mutate: mutate, + events: events.registry + }; + }; + + var BarMutation = function () { + var events = Events.create({ + drag: Event([ + 'xDelta', + 'yDelta', + 'target' + ]) + }); + var target = Option.none(); + var delegate = Mutation(); + delegate.events.drag.bind(function (event) { + target.each(function (t) { + events.trigger.drag(event.xDelta(), event.yDelta(), t); + }); + }); + var assign = function (t) { + target = Option.some(t); + }; + var get = function () { + return target; + }; + return { + assign: assign, + get: get, + mutate: delegate.mutate, + events: events.registry + }; + }; + + var isContentEditableTrue = function (elm) { + return get(elm, 'contenteditable') === 'true'; + }; + var findClosestContentEditable = function (target, isRoot) { + return closest$1(target, '[contenteditable]', isRoot); + }; + + var resizeBarDragging = Styles.resolve('resizer-bar-dragging'); + var BarManager = function (wire, direction, hdirection) { + var mutation = BarMutation(); + var resizing = Dragger.transform(mutation, {}); + var hoverTable = Option.none(); + var getResizer = function (element, type) { + return Option.from(get(element, type)); + }; + mutation.events.drag.bind(function (event) { + getResizer(event.target(), 'data-row').each(function (_dataRow) { + var currentRow = CellUtils.getInt(event.target(), 'top'); + set$1(event.target(), 'top', currentRow + event.yDelta() + 'px'); + }); + getResizer(event.target(), 'data-column').each(function (_dataCol) { + var currentCol = CellUtils.getInt(event.target(), 'left'); + set$1(event.target(), 'left', currentCol + event.xDelta() + 'px'); + }); + }); + var getDelta = function (target, dir) { + var newX = CellUtils.getInt(target, dir); + var oldX = parseInt(get(target, 'data-initial-' + dir), 10); + return newX - oldX; + }; + resizing.events.stop.bind(function () { + mutation.get().each(function (target) { + hoverTable.each(function (table) { + getResizer(target, 'data-row').each(function (row) { + var delta = getDelta(target, 'top'); + remove(target, 'data-initial-top'); + events.trigger.adjustHeight(table, delta, parseInt(row, 10)); + }); + getResizer(target, 'data-column').each(function (column) { + var delta = getDelta(target, 'left'); + remove(target, 'data-initial-left'); + events.trigger.adjustWidth(table, delta, parseInt(column, 10)); + }); + Bars.refresh(wire, table, hdirection, direction); + }); + }); + }); + var handler = function (target, dir) { + events.trigger.startAdjust(); + mutation.assign(target); + set(target, 'data-initial-' + dir, parseInt(get$1(target, dir), 10)); + add$2(target, resizeBarDragging); + set$1(target, 'opacity', '0.2'); + resizing.go(wire.parent()); + }; + var mousedown = bind$2(wire.parent(), 'mousedown', function (event) { + if (Bars.isRowBar(event.target())) { + handler(event.target(), 'top'); + } + if (Bars.isColBar(event.target())) { + handler(event.target(), 'left'); + } + }); + var isRoot = function (e) { + return eq(e, wire.view()); + }; + var findClosestEditableTable = function (target) { + return closest$1(target, 'table', isRoot).filter(function (table) { + return findClosestContentEditable(table, isRoot).exists(isContentEditableTrue); + }); + }; + var mouseover = bind$2(wire.view(), 'mouseover', function (event) { + findClosestEditableTable(event.target()).fold(function () { + if (inBody(event.target())) { + Bars.destroy(wire); + } + }, function (table) { + hoverTable = Option.some(table); + Bars.refresh(wire, table, hdirection, direction); + }); + }); + var destroy = function () { + mousedown.unbind(); + mouseover.unbind(); + resizing.destroy(); + Bars.destroy(wire); + }; + var refresh = function (tbl) { + Bars.refresh(wire, tbl, hdirection, direction); + }; + var events = Events.create({ + adjustHeight: Event([ + 'table', + 'delta', + 'row' + ]), + adjustWidth: Event([ + 'table', + 'delta', + 'column' + ]), + startAdjust: Event([]) + }); + return { + destroy: destroy, + refresh: refresh, + on: resizing.on, + off: resizing.off, + hideBars: curry(Bars.hide, wire), + showBars: curry(Bars.show, wire), + events: events.registry + }; + }; + + var create$2 = function (wire, vdirection) { + var hdirection = BarPositions.height; + var manager = BarManager(wire, vdirection, hdirection); + var events = Events.create({ + beforeResize: Event(['table']), + afterResize: Event(['table']), + startDrag: Event([]) + }); + manager.events.adjustHeight.bind(function (event) { + events.trigger.beforeResize(event.table()); + var delta = hdirection.delta(event.delta(), event.table()); + Adjustments.adjustHeight(event.table(), delta, event.row(), hdirection); + events.trigger.afterResize(event.table()); + }); + manager.events.startAdjust.bind(function (event) { + events.trigger.startDrag(); + }); + manager.events.adjustWidth.bind(function (event) { + events.trigger.beforeResize(event.table()); + var delta = vdirection.delta(event.delta(), event.table()); + Adjustments.adjustWidth(event.table(), delta, event.column(), vdirection); + events.trigger.afterResize(event.table()); + }); + return { + on: manager.on, + off: manager.off, + hideBars: manager.hideBars, + showBars: manager.showBars, + destroy: manager.destroy, + events: events.registry + }; + }; + var TableResize = { create: create$2 }; + + var createContainer = function () { + var container = Element.fromTag('div'); + setAll$1(container, { + position: 'static', + height: '0', + width: '0', + padding: '0', + margin: '0', + border: '0' + }); + append(body(), container); + return container; + }; + var get$8 = function (editor, container) { + return editor.inline ? ResizeWire.body(getBody$1(editor), createContainer()) : ResizeWire.only(Element.fromDom(editor.getDoc())); + }; + var remove$6 = function (editor, wire) { + if (editor.inline) { + remove$2(wire.parent()); + } + }; + var TableWire = { + get: get$8, + remove: remove$6 + }; + + var ResizeHandler = function (editor) { + var selectionRng = Option.none(); + var resize = Option.none(); + var wire = Option.none(); + var percentageBasedSizeRegex = /(\d+(\.\d+)?)%/; + var startW, startRawW; + var isTable = function (elm) { + return elm.nodeName === 'TABLE'; + }; + var getRawWidth = function (elm) { + return editor.dom.getStyle(elm, 'width') || editor.dom.getAttrib(elm, 'width'); + }; + var lazyResize = function () { + return resize; + }; + var lazyWire = function () { + return wire.getOr(ResizeWire.only(Element.fromDom(editor.getBody()))); + }; + var destroy = function () { + resize.each(function (sz) { + sz.destroy(); + }); + wire.each(function (w) { + TableWire.remove(editor, w); + }); + }; + editor.on('init', function () { + var direction = TableDirection(Direction.directionAt); + var rawWire = TableWire.get(editor); + wire = Option.some(rawWire); + if (hasObjectResizing(editor) && hasTableResizeBars(editor)) { + var sz = TableResize.create(rawWire, direction); + sz.on(); + sz.events.startDrag.bind(function (event) { + selectionRng = Option.some(editor.selection.getRng()); + }); + sz.events.beforeResize.bind(function (event) { + var rawTable = event.table().dom(); + fireObjectResizeStart(editor, rawTable, getPixelWidth$1(rawTable), getPixelHeight(rawTable)); + }); + sz.events.afterResize.bind(function (event) { + var table = event.table(); + var rawTable = table.dom(); + removeDataStyle(table); + selectionRng.each(function (rng) { + editor.selection.setRng(rng); + editor.focus(); + }); + fireObjectResized(editor, rawTable, getPixelWidth$1(rawTable), getPixelHeight(rawTable)); + editor.undoManager.add(); + }); + resize = Option.some(sz); + } + }); + editor.on('ObjectResizeStart', function (e) { + var targetElm = e.target; + if (isTable(targetElm)) { + startW = e.width; + startRawW = getRawWidth(targetElm); + } + }); + editor.on('ObjectResized', function (e) { + var targetElm = e.target; + if (isTable(targetElm)) { + var table = targetElm; + if (percentageBasedSizeRegex.test(startRawW)) { + var percentW = parseFloat(percentageBasedSizeRegex.exec(startRawW)[1]); + var targetPercentW = e.width * percentW / startW; + editor.dom.setStyle(table, 'width', targetPercentW + '%'); + } else { + var newCellSizes_1 = []; + global$1.each(table.rows, function (row) { + global$1.each(row.cells, function (cell) { + var width = editor.dom.getStyle(cell, 'width', true); + newCellSizes_1.push({ + cell: cell, + width: width + }); + }); + }); + global$1.each(newCellSizes_1, function (newCellSize) { + editor.dom.setStyle(newCellSize.cell, 'width', newCellSize.width); + editor.dom.setAttrib(newCellSize.cell, 'width', null); + }); + } + } + }); + return { + lazyResize: lazyResize, + lazyWire: lazyWire, + destroy: destroy + }; + }; + + var adt$1 = Adt.generate([ + { none: ['current'] }, + { first: ['current'] }, + { + middle: [ + 'current', + 'target' + ] + }, + { last: ['current'] } + ]); + var none$1 = function (current) { + if (current === void 0) { + current = undefined; + } + return adt$1.none(current); + }; + var CellLocation = __assign(__assign({}, adt$1), { none: none$1 }); + + var detect$4 = function (current, isRoot) { + return TableLookup.table(current, isRoot).bind(function (table) { + var all = TableLookup.cells(table); + var index = findIndex(all, function (x) { + return eq(current, x); + }); + return index.map(function (ind) { + return { + index: constant(ind), + all: constant(all) + }; + }); + }); + }; + var next = function (current, isRoot) { + var detection = detect$4(current, isRoot); + return detection.fold(function () { + return CellLocation.none(current); + }, function (info) { + return info.index() + 1 < info.all().length ? CellLocation.middle(current, info.all()[info.index() + 1]) : CellLocation.last(current); + }); + }; + var prev = function (current, isRoot) { + var detection = detect$4(current, isRoot); + return detection.fold(function () { + return CellLocation.none(); + }, function (info) { + return info.index() - 1 >= 0 ? CellLocation.middle(current, info.all()[info.index() - 1]) : CellLocation.first(current); + }); + }; + var CellNavigation = { + next: next, + prev: prev + }; + + var create$3 = Immutable('start', 'soffset', 'finish', 'foffset'); + var SimRange = { create: create$3 }; + + var adt$2 = Adt.generate([ + { before: ['element'] }, + { + on: [ + 'element', + 'offset' + ] + }, + { after: ['element'] } + ]); + var cata$1 = function (subject, onBefore, onOn, onAfter) { + return subject.fold(onBefore, onOn, onAfter); + }; + var getStart = function (situ) { + return situ.fold(identity, identity, identity); + }; + var before$2 = adt$2.before; + var on = adt$2.on; + var after$2 = adt$2.after; + var Situ = { + before: before$2, + on: on, + after: after$2, + cata: cata$1, + getStart: getStart + }; + + var adt$3 = Adt.generate([ + { domRange: ['rng'] }, + { + relative: [ + 'startSitu', + 'finishSitu' + ] + }, + { + exact: [ + 'start', + 'soffset', + 'finish', + 'foffset' + ] + } + ]); + var exactFromRange = function (simRange) { + return adt$3.exact(simRange.start(), simRange.soffset(), simRange.finish(), simRange.foffset()); + }; + var getStart$1 = function (selection) { + return selection.match({ + domRange: function (rng) { + return Element.fromDom(rng.startContainer); + }, + relative: function (startSitu, finishSitu) { + return Situ.getStart(startSitu); + }, + exact: function (start, soffset, finish, foffset) { + return start; + } + }); + }; + var domRange = adt$3.domRange; + var relative = adt$3.relative; + var exact = adt$3.exact; + var getWin = function (selection) { + var start = getStart$1(selection); + return defaultView(start); + }; + var range$1 = SimRange.create; + var Selection = { + domRange: domRange, + relative: relative, + exact: exact, + exactFromRange: exactFromRange, + getWin: getWin, + range: range$1 + }; + + var selectNodeContents = function (win, element) { + var rng = win.document.createRange(); + selectNodeContentsUsing(rng, element); + return rng; + }; + var selectNodeContentsUsing = function (rng, element) { + rng.selectNodeContents(element.dom()); + }; + var setStart = function (rng, situ) { + situ.fold(function (e) { + rng.setStartBefore(e.dom()); + }, function (e, o) { + rng.setStart(e.dom(), o); + }, function (e) { + rng.setStartAfter(e.dom()); + }); + }; + var setFinish = function (rng, situ) { + situ.fold(function (e) { + rng.setEndBefore(e.dom()); + }, function (e, o) { + rng.setEnd(e.dom(), o); + }, function (e) { + rng.setEndAfter(e.dom()); + }); + }; + var relativeToNative = function (win, startSitu, finishSitu) { + var range = win.document.createRange(); + setStart(range, startSitu); + setFinish(range, finishSitu); + return range; + }; + var exactToNative = function (win, start, soffset, finish, foffset) { + var rng = win.document.createRange(); + rng.setStart(start.dom(), soffset); + rng.setEnd(finish.dom(), foffset); + return rng; + }; + var toRect = function (rect) { + return { + left: constant(rect.left), + top: constant(rect.top), + right: constant(rect.right), + bottom: constant(rect.bottom), + width: constant(rect.width), + height: constant(rect.height) + }; + }; + var getFirstRect = function (rng) { + var rects = rng.getClientRects(); + var rect = rects.length > 0 ? rects[0] : rng.getBoundingClientRect(); + return rect.width > 0 || rect.height > 0 ? Option.some(rect).map(toRect) : Option.none(); + }; + + var adt$4 = Adt.generate([ + { + ltr: [ + 'start', + 'soffset', + 'finish', + 'foffset' + ] + }, + { + rtl: [ + 'start', + 'soffset', + 'finish', + 'foffset' + ] + } + ]); + var fromRange = function (win, type, range) { + return type(Element.fromDom(range.startContainer), range.startOffset, Element.fromDom(range.endContainer), range.endOffset); + }; + var getRanges = function (win, selection) { + return selection.match({ + domRange: function (rng) { + return { + ltr: constant(rng), + rtl: Option.none + }; + }, + relative: function (startSitu, finishSitu) { + return { + ltr: cached(function () { + return relativeToNative(win, startSitu, finishSitu); + }), + rtl: cached(function () { + return Option.some(relativeToNative(win, finishSitu, startSitu)); + }) + }; + }, + exact: function (start, soffset, finish, foffset) { + return { + ltr: cached(function () { + return exactToNative(win, start, soffset, finish, foffset); + }), + rtl: cached(function () { + return Option.some(exactToNative(win, finish, foffset, start, soffset)); + }) + }; + } + }); + }; + var doDiagnose = function (win, ranges) { + var rng = ranges.ltr(); + if (rng.collapsed) { + var reversed = ranges.rtl().filter(function (rev) { + return rev.collapsed === false; + }); + return reversed.map(function (rev) { + return adt$4.rtl(Element.fromDom(rev.endContainer), rev.endOffset, Element.fromDom(rev.startContainer), rev.startOffset); + }).getOrThunk(function () { + return fromRange(win, adt$4.ltr, rng); + }); + } else { + return fromRange(win, adt$4.ltr, rng); + } + }; + var diagnose = function (win, selection) { + var ranges = getRanges(win, selection); + return doDiagnose(win, ranges); + }; + var asLtrRange = function (win, selection) { + var diagnosis = diagnose(win, selection); + return diagnosis.match({ + ltr: function (start, soffset, finish, foffset) { + var rng = win.document.createRange(); + rng.setStart(start.dom(), soffset); + rng.setEnd(finish.dom(), foffset); + return rng; + }, + rtl: function (start, soffset, finish, foffset) { + var rng = win.document.createRange(); + rng.setStart(finish.dom(), foffset); + rng.setEnd(start.dom(), soffset); + return rng; + } + }); + }; + + var searchForPoint = function (rectForOffset, x, y, maxX, length) { + if (length === 0) { + return 0; + } else if (x === maxX) { + return length - 1; + } + var xDelta = maxX; + for (var i = 1; i < length; i++) { + var rect = rectForOffset(i); + var curDeltaX = Math.abs(x - rect.left); + if (y <= rect.bottom) { + if (y < rect.top || curDeltaX > xDelta) { + return i - 1; + } else { + xDelta = curDeltaX; + } + } + } + return 0; + }; + var inRect = function (rect, x, y) { + return x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom; + }; + + var locateOffset = function (doc, textnode, x, y, rect) { + var rangeForOffset = function (o) { + var r = doc.dom().createRange(); + r.setStart(textnode.dom(), o); + r.collapse(true); + return r; + }; + var rectForOffset = function (o) { + var r = rangeForOffset(o); + return r.getBoundingClientRect(); + }; + var length = get$2(textnode).length; + var offset = searchForPoint(rectForOffset, x, y, rect.right, length); + return rangeForOffset(offset); + }; + var locate = function (doc, node, x, y) { + var r = doc.dom().createRange(); + r.selectNode(node.dom()); + var rects = r.getClientRects(); + var foundRect = findMap(rects, function (rect) { + return inRect(rect, x, y) ? Option.some(rect) : Option.none(); + }); + return foundRect.map(function (rect) { + return locateOffset(doc, node, x, y, rect); + }); + }; + + var searchInChildren = function (doc, node, x, y) { + var r = doc.dom().createRange(); + var nodes = children(node); + return findMap(nodes, function (n) { + r.selectNode(n.dom()); + return inRect(r.getBoundingClientRect(), x, y) ? locateNode(doc, n, x, y) : Option.none(); + }); + }; + var locateNode = function (doc, node, x, y) { + return isText(node) ? locate(doc, node, x, y) : searchInChildren(doc, node, x, y); + }; + var locate$1 = function (doc, node, x, y) { + var r = doc.dom().createRange(); + r.selectNode(node.dom()); + var rect = r.getBoundingClientRect(); + var boundedX = Math.max(rect.left, Math.min(rect.right, x)); + var boundedY = Math.max(rect.top, Math.min(rect.bottom, y)); + return locateNode(doc, node, boundedX, boundedY); + }; + + var COLLAPSE_TO_LEFT = true; + var COLLAPSE_TO_RIGHT = false; + var getCollapseDirection = function (rect, x) { + return x - rect.left < rect.right - x ? COLLAPSE_TO_LEFT : COLLAPSE_TO_RIGHT; + }; + var createCollapsedNode = function (doc, target, collapseDirection) { + var r = doc.dom().createRange(); + r.selectNode(target.dom()); + r.collapse(collapseDirection); + return r; + }; + var locateInElement = function (doc, node, x) { + var cursorRange = doc.dom().createRange(); + cursorRange.selectNode(node.dom()); + var rect = cursorRange.getBoundingClientRect(); + var collapseDirection = getCollapseDirection(rect, x); + var f = collapseDirection === COLLAPSE_TO_LEFT ? first : last$1; + return f(node).map(function (target) { + return createCollapsedNode(doc, target, collapseDirection); + }); + }; + var locateInEmpty = function (doc, node, x) { + var rect = node.dom().getBoundingClientRect(); + var collapseDirection = getCollapseDirection(rect, x); + return Option.some(createCollapsedNode(doc, node, collapseDirection)); + }; + var search = function (doc, node, x) { + var f = children(node).length === 0 ? locateInEmpty : locateInElement; + return f(doc, node, x); + }; + + var caretPositionFromPoint = function (doc, x, y) { + return Option.from(doc.dom().caretPositionFromPoint(x, y)).bind(function (pos) { + if (pos.offsetNode === null) { + return Option.none(); + } + var r = doc.dom().createRange(); + r.setStart(pos.offsetNode, pos.offset); + r.collapse(); + return Option.some(r); + }); + }; + var caretRangeFromPoint = function (doc, x, y) { + return Option.from(doc.dom().caretRangeFromPoint(x, y)); + }; + var searchTextNodes = function (doc, node, x, y) { + var r = doc.dom().createRange(); + r.selectNode(node.dom()); + var rect = r.getBoundingClientRect(); + var boundedX = Math.max(rect.left, Math.min(rect.right, x)); + var boundedY = Math.max(rect.top, Math.min(rect.bottom, y)); + return locate$1(doc, node, boundedX, boundedY); + }; + var searchFromPoint = function (doc, x, y) { + return Element.fromPoint(doc, x, y).bind(function (elem) { + var fallback = function () { + return search(doc, elem, x); + }; + return children(elem).length === 0 ? fallback() : searchTextNodes(doc, elem, x, y).orThunk(fallback); + }); + }; + var availableSearch = document.caretPositionFromPoint ? caretPositionFromPoint : document.caretRangeFromPoint ? caretRangeFromPoint : searchFromPoint; + var fromPoint$1 = function (win, x, y) { + var doc = Element.fromDom(win.document); + return availableSearch(doc, x, y).map(function (rng) { + return SimRange.create(Element.fromDom(rng.startContainer), rng.startOffset, Element.fromDom(rng.endContainer), rng.endOffset); + }); + }; + + var beforeSpecial = function (element, offset) { + var name$1 = name(element); + if ('input' === name$1) { + return Situ.after(element); + } else if (!contains([ + 'br', + 'img' + ], name$1)) { + return Situ.on(element, offset); + } else { + return offset === 0 ? Situ.before(element) : Situ.after(element); + } + }; + var preprocessRelative = function (startSitu, finishSitu) { + var start = startSitu.fold(Situ.before, beforeSpecial, Situ.after); + var finish = finishSitu.fold(Situ.before, beforeSpecial, Situ.after); + return Selection.relative(start, finish); + }; + var preprocessExact = function (start, soffset, finish, foffset) { + var startSitu = beforeSpecial(start, soffset); + var finishSitu = beforeSpecial(finish, foffset); + return Selection.relative(startSitu, finishSitu); + }; + var preprocess = function (selection) { + return selection.match({ + domRange: function (rng) { + var start = Element.fromDom(rng.startContainer); + var finish = Element.fromDom(rng.endContainer); + return preprocessExact(start, rng.startOffset, finish, rng.endOffset); + }, + relative: preprocessRelative, + exact: preprocessExact + }); + }; + + var makeRange = function (start, soffset, finish, foffset) { + var doc = owner(start); + var rng = doc.dom().createRange(); + rng.setStart(start.dom(), soffset); + rng.setEnd(finish.dom(), foffset); + return rng; + }; + var after$3 = function (start, soffset, finish, foffset) { + var r = makeRange(start, soffset, finish, foffset); + var same = eq(start, finish) && soffset === foffset; + return r.collapsed && !same; + }; + + var doSetNativeRange = function (win, rng) { + Option.from(win.getSelection()).each(function (selection) { + selection.removeAllRanges(); + selection.addRange(rng); + }); + }; + var doSetRange = function (win, start, soffset, finish, foffset) { + var rng = exactToNative(win, start, soffset, finish, foffset); + doSetNativeRange(win, rng); + }; + var setLegacyRtlRange = function (win, selection, start, soffset, finish, foffset) { + selection.collapse(start.dom(), soffset); + selection.extend(finish.dom(), foffset); + }; + var setRangeFromRelative = function (win, relative) { + return diagnose(win, relative).match({ + ltr: function (start, soffset, finish, foffset) { + doSetRange(win, start, soffset, finish, foffset); + }, + rtl: function (start, soffset, finish, foffset) { + var selection = win.getSelection(); + if (selection.setBaseAndExtent) { + selection.setBaseAndExtent(start.dom(), soffset, finish.dom(), foffset); + } else if (selection.extend) { + try { + setLegacyRtlRange(win, selection, start, soffset, finish, foffset); + } catch (e) { + doSetRange(win, finish, foffset, start, soffset); + } + } else { + doSetRange(win, finish, foffset, start, soffset); + } + } + }); + }; + var setExact = function (win, start, soffset, finish, foffset) { + var relative = preprocessExact(start, soffset, finish, foffset); + setRangeFromRelative(win, relative); + }; + var setRelative = function (win, startSitu, finishSitu) { + var relative = preprocessRelative(startSitu, finishSitu); + setRangeFromRelative(win, relative); + }; + var toNative = function (selection) { + var win = Selection.getWin(selection).dom(); + var getDomRange = function (start, soffset, finish, foffset) { + return exactToNative(win, start, soffset, finish, foffset); + }; + var filtered = preprocess(selection); + return diagnose(win, filtered).match({ + ltr: getDomRange, + rtl: getDomRange + }); + }; + var readRange = function (selection) { + if (selection.rangeCount > 0) { + var firstRng = selection.getRangeAt(0); + var lastRng = selection.getRangeAt(selection.rangeCount - 1); + return Option.some(SimRange.create(Element.fromDom(firstRng.startContainer), firstRng.startOffset, Element.fromDom(lastRng.endContainer), lastRng.endOffset)); + } else { + return Option.none(); + } + }; + var doGetExact = function (selection) { + var anchor = Element.fromDom(selection.anchorNode); + var focus = Element.fromDom(selection.focusNode); + return after$3(anchor, selection.anchorOffset, focus, selection.focusOffset) ? Option.some(SimRange.create(anchor, selection.anchorOffset, focus, selection.focusOffset)) : readRange(selection); + }; + var setToElement = function (win, element) { + var rng = selectNodeContents(win, element); + doSetNativeRange(win, rng); + }; + var getExact = function (win) { + return Option.from(win.getSelection()).filter(function (sel) { + return sel.rangeCount > 0; + }).bind(doGetExact); + }; + var get$9 = function (win) { + return getExact(win).map(function (range) { + return Selection.exact(range.start(), range.soffset(), range.finish(), range.foffset()); + }); + }; + var getFirstRect$1 = function (win, selection) { + var rng = asLtrRange(win, selection); + return getFirstRect(rng); + }; + var getAtPoint = function (win, x, y) { + return fromPoint$1(win, x, y); + }; + var clear = function (win) { + var selection = win.getSelection(); + selection.removeAllRanges(); + }; + + var global$3 = tinymce.util.Tools.resolve('tinymce.util.VK'); + + var forward = function (editor, isRoot, cell, lazyWire) { + return go(editor, isRoot, CellNavigation.next(cell), lazyWire); + }; + var backward = function (editor, isRoot, cell, lazyWire) { + return go(editor, isRoot, CellNavigation.prev(cell), lazyWire); + }; + var getCellFirstCursorPosition = function (editor, cell) { + var selection = Selection.exact(cell, 0, cell, 0); + return toNative(selection); + }; + var getNewRowCursorPosition = function (editor, table) { + var rows = descendants$1(table, 'tr'); + return last(rows).bind(function (last) { + return descendant$1(last, 'td,th').map(function (first) { + return getCellFirstCursorPosition(editor, first); + }); + }); + }; + var go = function (editor, isRoot, cell, actions, lazyWire) { + return cell.fold(Option.none, Option.none, function (current, next) { + return first(next).map(function (cell) { + return getCellFirstCursorPosition(editor, cell); + }); + }, function (current) { + return TableLookup.table(current, isRoot).bind(function (table) { + var targets = TableTargets.noMenu(current); + editor.undoManager.transact(function () { + actions.insertRowsAfter(table, targets); + }); + return getNewRowCursorPosition(editor, table); + }); + }); + }; + var rootElements = [ + 'table', + 'li', + 'dl' + ]; + var handle$1 = function (event, editor, actions, lazyWire) { + if (event.keyCode === global$3.TAB) { + var body_1 = getBody$1(editor); + var isRoot_1 = function (element) { + var name$1 = name(element); + return eq(element, body_1) || contains(rootElements, name$1); + }; + var rng = editor.selection.getRng(); + if (rng.collapsed) { + var start = Element.fromDom(rng.startContainer); + TableLookup.cell(start, isRoot_1).each(function (cell) { + event.preventDefault(); + var navigation = event.shiftKey ? backward : forward; + var rng = navigation(editor, isRoot_1, cell, actions, lazyWire); + rng.each(function (range) { + editor.selection.setRng(range); + }); + }); + } + } + }; + var TabContext = { handle: handle$1 }; + + var create$4 = Immutable('selection', 'kill'); + var Response = { create: create$4 }; + + var create$5 = function (start, soffset, finish, foffset) { + return { + start: constant(Situ.on(start, soffset)), + finish: constant(Situ.on(finish, foffset)) + }; + }; + var Situs = { create: create$5 }; + + var convertToRange = function (win, selection) { + var rng = asLtrRange(win, selection); + return SimRange.create(Element.fromDom(rng.startContainer), rng.startOffset, Element.fromDom(rng.endContainer), rng.endOffset); + }; + var makeSitus = Situs.create; + var Util = { + convertToRange: convertToRange, + makeSitus: makeSitus + }; + + var sync = function (container, isRoot, start, soffset, finish, foffset, selectRange) { + if (!(eq(start, finish) && soffset === foffset)) { + return closest$1(start, 'td,th', isRoot).bind(function (s) { + return closest$1(finish, 'td,th', isRoot).bind(function (f) { + return detect$5(container, isRoot, s, f, selectRange); + }); + }); + } else { + return Option.none(); + } + }; + var detect$5 = function (container, isRoot, start, finish, selectRange) { + if (!eq(start, finish)) { + return CellSelection.identify(start, finish, isRoot).bind(function (cellSel) { + var boxes = cellSel.boxes().getOr([]); + if (boxes.length > 0) { + selectRange(container, boxes, cellSel.start(), cellSel.finish()); + return Option.some(Response.create(Option.some(Util.makeSitus(start, 0, start, getEnd(start))), true)); + } else { + return Option.none(); + } + }); + } else { + return Option.none(); + } + }; + var update = function (rows, columns, container, selected, annotations) { + var updateSelection = function (newSels) { + annotations.clear(container); + annotations.selectRange(container, newSels.boxes(), newSels.start(), newSels.finish()); + return newSels.boxes(); + }; + return CellSelection.shiftSelection(selected, rows, columns, annotations.firstSelectedSelector(), annotations.lastSelectedSelector()).map(updateSelection); + }; + var KeySelection = { + sync: sync, + detect: detect$5, + update: update + }; + + var traverse = Immutable('item', 'mode'); + var backtrack = function (universe, item, _direction, transition) { + if (transition === void 0) { + transition = sidestep; + } + return universe.property().parent(item).map(function (p) { + return traverse(p, transition); + }); + }; + var sidestep = function (universe, item, direction, transition) { + if (transition === void 0) { + transition = advance; + } + return direction.sibling(universe, item).map(function (p) { + return traverse(p, transition); + }); + }; + var advance = function (universe, item, direction, transition) { + if (transition === void 0) { + transition = advance; + } + var children = universe.property().children(item); + var result = direction.first(children); + return result.map(function (r) { + return traverse(r, transition); + }); + }; + var successors = [ + { + current: backtrack, + next: sidestep, + fallback: Option.none() + }, + { + current: sidestep, + next: advance, + fallback: Option.some(backtrack) + }, + { + current: advance, + next: advance, + fallback: Option.some(sidestep) + } + ]; + var go$1 = function (universe, item, mode, direction, rules) { + if (rules === void 0) { + rules = successors; + } + var ruleOpt = find(rules, function (succ) { + return succ.current === mode; + }); + return ruleOpt.bind(function (rule) { + return rule.current(universe, item, direction, rule.next).orThunk(function () { + return rule.fallback.bind(function (fb) { + return go$1(universe, item, fb, direction); + }); + }); + }); + }; + + var left = function () { + var sibling = function (universe, item) { + return universe.query().prevSibling(item); + }; + var first = function (children) { + return children.length > 0 ? Option.some(children[children.length - 1]) : Option.none(); + }; + return { + sibling: sibling, + first: first + }; + }; + var right = function () { + var sibling = function (universe, item) { + return universe.query().nextSibling(item); + }; + var first = function (children) { + return children.length > 0 ? Option.some(children[0]) : Option.none(); + }; + return { + sibling: sibling, + first: first + }; + }; + var Walkers = { + left: left, + right: right + }; + + var hone = function (universe, item, predicate, mode, direction, isRoot) { + var next = go$1(universe, item, mode, direction); + return next.bind(function (n) { + if (isRoot(n.item())) { + return Option.none(); + } else { + return predicate(n.item()) ? Option.some(n.item()) : hone(universe, n.item(), predicate, n.mode(), direction, isRoot); + } + }); + }; + var left$1 = function (universe, item, predicate, isRoot) { + return hone(universe, item, predicate, sidestep, Walkers.left(), isRoot); + }; + var right$1 = function (universe, item, predicate, isRoot) { + return hone(universe, item, predicate, sidestep, Walkers.right(), isRoot); + }; + + var isLeaf = function (universe) { + return function (element) { + return universe.property().children(element).length === 0; + }; + }; + var before$3 = function (universe, item, isRoot) { + return seekLeft(universe, item, isLeaf(universe), isRoot); + }; + var after$4 = function (universe, item, isRoot) { + return seekRight(universe, item, isLeaf(universe), isRoot); + }; + var seekLeft = left$1; + var seekRight = right$1; + + var universe$2 = DomUniverse(); + var before$4 = function (element, isRoot) { + return before$3(universe$2, element, isRoot); + }; + var after$5 = function (element, isRoot) { + return after$4(universe$2, element, isRoot); + }; + var seekLeft$1 = function (element, predicate, isRoot) { + return seekLeft(universe$2, element, predicate, isRoot); + }; + var seekRight$1 = function (element, predicate, isRoot) { + return seekRight(universe$2, element, predicate, isRoot); + }; + + var ancestor$2 = function (scope, predicate, isRoot) { + return ancestor(scope, predicate, isRoot).isSome(); + }; + + var point = Immutable('element', 'offset'); + var delta = Immutable('element', 'deltaOffset'); + var range$2 = Immutable('element', 'start', 'finish'); + var points = Immutable('begin', 'end'); + var text = Immutable('element', 'text'); + + var adt$5 = Adt.generate([ + { none: ['message'] }, + { success: [] }, + { failedUp: ['cell'] }, + { failedDown: ['cell'] } + ]); + var isOverlapping = function (bridge, before, after) { + var beforeBounds = bridge.getRect(before); + var afterBounds = bridge.getRect(after); + return afterBounds.right > beforeBounds.left && afterBounds.left < beforeBounds.right; + }; + var isRow = function (elem) { + return closest$1(elem, 'tr'); + }; + var verify = function (bridge, before, beforeOffset, after, afterOffset, failure, isRoot) { + return closest$1(after, 'td,th', isRoot).bind(function (afterCell) { + return closest$1(before, 'td,th', isRoot).map(function (beforeCell) { + if (!eq(afterCell, beforeCell)) { + return DomParent.sharedOne(isRow, [ + afterCell, + beforeCell + ]).fold(function () { + return isOverlapping(bridge, beforeCell, afterCell) ? adt$5.success() : failure(beforeCell); + }, function (_sharedRow) { + return failure(beforeCell); + }); + } else { + return eq(after, afterCell) && getEnd(afterCell) === afterOffset ? failure(beforeCell) : adt$5.none('in same cell'); + } + }); + }).getOr(adt$5.none('default')); + }; + var cata$2 = function (subject, onNone, onSuccess, onFailedUp, onFailedDown) { + return subject.fold(onNone, onSuccess, onFailedUp, onFailedDown); + }; + var BeforeAfter = __assign(__assign({}, adt$5), { + verify: verify, + cata: cata$2 + }); + + var inAncestor = Immutable('ancestor', 'descendants', 'element', 'index'); + var inParent = Immutable('parent', 'children', 'element', 'index'); + var indexInParent = function (element) { + return parent(element).bind(function (parent) { + var children$1 = children(parent); + return indexOf(children$1, element).map(function (index) { + return inParent(parent, children$1, element, index); + }); + }); + }; + var indexOf = function (elements, element) { + return findIndex(elements, curry(eq, element)); + }; + + var isBr = function (elem) { + return name(elem) === 'br'; + }; + var gatherer = function (cand, gather, isRoot) { + return gather(cand, isRoot).bind(function (target) { + return isText(target) && get$2(target).trim().length === 0 ? gatherer(target, gather, isRoot) : Option.some(target); + }); + }; + var handleBr = function (isRoot, element, direction) { + return direction.traverse(element).orThunk(function () { + return gatherer(element, direction.gather, isRoot); + }).map(direction.relative); + }; + var findBr = function (element, offset) { + return child(element, offset).filter(isBr).orThunk(function () { + return child(element, offset - 1).filter(isBr); + }); + }; + var handleParent = function (isRoot, element, offset, direction) { + return findBr(element, offset).bind(function (br) { + return direction.traverse(br).fold(function () { + return gatherer(br, direction.gather, isRoot).map(direction.relative); + }, function (adjacent) { + return indexInParent(adjacent).map(function (info) { + return Situ.on(info.parent(), info.index()); + }); + }); + }); + }; + var tryBr = function (isRoot, element, offset, direction) { + var target = isBr(element) ? handleBr(isRoot, element, direction) : handleParent(isRoot, element, offset, direction); + return target.map(function (tgt) { + return { + start: constant(tgt), + finish: constant(tgt) + }; + }); + }; + var process = function (analysis) { + return BeforeAfter.cata(analysis, function (message) { + return Option.none(); + }, function () { + return Option.none(); + }, function (cell) { + return Option.some(point(cell, 0)); + }, function (cell) { + return Option.some(point(cell, getEnd(cell))); + }); + }; + var BrTags = { + tryBr: tryBr, + process: process + }; + + var nu$3 = MixedBag([ + 'left', + 'top', + 'right', + 'bottom' + ], []); + var moveDown = function (caret, amount) { + return nu$3({ + left: caret.left(), + top: caret.top() + amount, + right: caret.right(), + bottom: caret.bottom() + amount + }); + }; + var moveUp = function (caret, amount) { + return nu$3({ + left: caret.left(), + top: caret.top() - amount, + right: caret.right(), + bottom: caret.bottom() - amount + }); + }; + var moveBottomTo = function (caret, bottom) { + var height = caret.bottom() - caret.top(); + return nu$3({ + left: caret.left(), + top: bottom - height, + right: caret.right(), + bottom: bottom + }); + }; + var moveTopTo = function (caret, top) { + var height = caret.bottom() - caret.top(); + return nu$3({ + left: caret.left(), + top: top, + right: caret.right(), + bottom: top + height + }); + }; + var translate = function (caret, xDelta, yDelta) { + return nu$3({ + left: caret.left() + xDelta, + top: caret.top() + yDelta, + right: caret.right() + xDelta, + bottom: caret.bottom() + yDelta + }); + }; + var getTop$1 = function (caret) { + return caret.top(); + }; + var getBottom = function (caret) { + return caret.bottom(); + }; + var toString = function (caret) { + return '(' + caret.left() + ', ' + caret.top() + ') -> (' + caret.right() + ', ' + caret.bottom() + ')'; + }; + var Carets = { + nu: nu$3, + moveUp: moveUp, + moveDown: moveDown, + moveBottomTo: moveBottomTo, + moveTopTo: moveTopTo, + getTop: getTop$1, + getBottom: getBottom, + translate: translate, + toString: toString + }; + + var getPartialBox = function (bridge, element, offset) { + if (offset >= 0 && offset < getEnd(element)) { + return bridge.getRangedRect(element, offset, element, offset + 1); + } else if (offset > 0) { + return bridge.getRangedRect(element, offset - 1, element, offset); + } + return Option.none(); + }; + var toCaret = function (rect) { + return Carets.nu({ + left: rect.left, + top: rect.top, + right: rect.right, + bottom: rect.bottom + }); + }; + var getElemBox = function (bridge, element) { + return Option.some(bridge.getRect(element)); + }; + var getBoxAt = function (bridge, element, offset) { + if (isElement(element)) { + return getElemBox(bridge, element).map(toCaret); + } else if (isText(element)) { + return getPartialBox(bridge, element, offset).map(toCaret); + } else { + return Option.none(); + } + }; + var getEntireBox = function (bridge, element) { + if (isElement(element)) { + return getElemBox(bridge, element).map(toCaret); + } else if (isText(element)) { + return bridge.getRangedRect(element, 0, element, getEnd(element)).map(toCaret); + } else { + return Option.none(); + } + }; + var Rectangles = { + getBoxAt: getBoxAt, + getEntireBox: getEntireBox + }; + + var JUMP_SIZE = 5; + var NUM_RETRIES = 100; + var adt$6 = Adt.generate([ + { none: [] }, + { retry: ['caret'] } + ]); + var isOutside = function (caret, box) { + return caret.left() < box.left() || Math.abs(box.right() - caret.left()) < 1 || caret.left() > box.right(); + }; + var inOutsideBlock = function (bridge, element, caret) { + return closest(element, DomStructure.isBlock).fold(constant(false), function (cell) { + return Rectangles.getEntireBox(bridge, cell).exists(function (box) { + return isOutside(caret, box); + }); + }); + }; + var adjustDown = function (bridge, element, guessBox, original, caret) { + var lowerCaret = Carets.moveDown(caret, JUMP_SIZE); + if (Math.abs(guessBox.bottom() - original.bottom()) < 1) { + return adt$6.retry(lowerCaret); + } else if (guessBox.top() > caret.bottom()) { + return adt$6.retry(lowerCaret); + } else if (guessBox.top() === caret.bottom()) { + return adt$6.retry(Carets.moveDown(caret, 1)); + } else { + return inOutsideBlock(bridge, element, caret) ? adt$6.retry(Carets.translate(lowerCaret, JUMP_SIZE, 0)) : adt$6.none(); + } + }; + var adjustUp = function (bridge, element, guessBox, original, caret) { + var higherCaret = Carets.moveUp(caret, JUMP_SIZE); + if (Math.abs(guessBox.top() - original.top()) < 1) { + return adt$6.retry(higherCaret); + } else if (guessBox.bottom() < caret.top()) { + return adt$6.retry(higherCaret); + } else if (guessBox.bottom() === caret.top()) { + return adt$6.retry(Carets.moveUp(caret, 1)); + } else { + return inOutsideBlock(bridge, element, caret) ? adt$6.retry(Carets.translate(higherCaret, JUMP_SIZE, 0)) : adt$6.none(); + } + }; + var upMovement = { + point: Carets.getTop, + adjuster: adjustUp, + move: Carets.moveUp, + gather: before$4 + }; + var downMovement = { + point: Carets.getBottom, + adjuster: adjustDown, + move: Carets.moveDown, + gather: after$5 + }; + var isAtTable = function (bridge, x, y) { + return bridge.elementFromPoint(x, y).filter(function (elm) { + return name(elm) === 'table'; + }).isSome(); + }; + var adjustForTable = function (bridge, movement, original, caret, numRetries) { + return adjustTil(bridge, movement, original, movement.move(caret, JUMP_SIZE), numRetries); + }; + var adjustTil = function (bridge, movement, original, caret, numRetries) { + if (numRetries === 0) { + return Option.some(caret); + } + if (isAtTable(bridge, caret.left(), movement.point(caret))) { + return adjustForTable(bridge, movement, original, caret, numRetries - 1); + } + return bridge.situsFromPoint(caret.left(), movement.point(caret)).bind(function (guess) { + return guess.start().fold(Option.none, function (element) { + return Rectangles.getEntireBox(bridge, element).bind(function (guessBox) { + return movement.adjuster(bridge, element, guessBox, original, caret).fold(Option.none, function (newCaret) { + return adjustTil(bridge, movement, original, newCaret, numRetries - 1); + }); + }).orThunk(function () { + return Option.some(caret); + }); + }, Option.none); + }); + }; + var ieTryDown = function (bridge, caret) { + return bridge.situsFromPoint(caret.left(), caret.bottom() + JUMP_SIZE); + }; + var ieTryUp = function (bridge, caret) { + return bridge.situsFromPoint(caret.left(), caret.top() - JUMP_SIZE); + }; + var checkScroll = function (movement, adjusted, bridge) { + if (movement.point(adjusted) > bridge.getInnerHeight()) { + return Option.some(movement.point(adjusted) - bridge.getInnerHeight()); + } else if (movement.point(adjusted) < 0) { + return Option.some(-movement.point(adjusted)); + } else { + return Option.none(); + } + }; + var retry = function (movement, bridge, caret) { + var moved = movement.move(caret, JUMP_SIZE); + var adjusted = adjustTil(bridge, movement, caret, moved, NUM_RETRIES).getOr(moved); + return checkScroll(movement, adjusted, bridge).fold(function () { + return bridge.situsFromPoint(adjusted.left(), movement.point(adjusted)); + }, function (delta) { + bridge.scrollBy(0, delta); + return bridge.situsFromPoint(adjusted.left(), movement.point(adjusted) - delta); + }); + }; + var Retries = { + tryUp: curry(retry, upMovement), + tryDown: curry(retry, downMovement), + ieTryUp: ieTryUp, + ieTryDown: ieTryDown, + getJumpSize: constant(JUMP_SIZE) + }; + + var MAX_RETRIES = 20; + var platform$1 = PlatformDetection$1.detect(); + var findSpot = function (bridge, isRoot, direction) { + return bridge.getSelection().bind(function (sel) { + return BrTags.tryBr(isRoot, sel.finish(), sel.foffset(), direction).fold(function () { + return Option.some(point(sel.finish(), sel.foffset())); + }, function (brNeighbour) { + var range = bridge.fromSitus(brNeighbour); + var analysis = BeforeAfter.verify(bridge, sel.finish(), sel.foffset(), range.finish(), range.foffset(), direction.failure, isRoot); + return BrTags.process(analysis); + }); + }); + }; + var scan = function (bridge, isRoot, element, offset, direction, numRetries) { + if (numRetries === 0) { + return Option.none(); + } + return tryCursor(bridge, isRoot, element, offset, direction).bind(function (situs) { + var range = bridge.fromSitus(situs); + var analysis = BeforeAfter.verify(bridge, element, offset, range.finish(), range.foffset(), direction.failure, isRoot); + return BeforeAfter.cata(analysis, function () { + return Option.none(); + }, function () { + return Option.some(situs); + }, function (cell) { + if (eq(element, cell) && offset === 0) { + return tryAgain(bridge, element, offset, Carets.moveUp, direction); + } else { + return scan(bridge, isRoot, cell, 0, direction, numRetries - 1); + } + }, function (cell) { + if (eq(element, cell) && offset === getEnd(cell)) { + return tryAgain(bridge, element, offset, Carets.moveDown, direction); + } else { + return scan(bridge, isRoot, cell, getEnd(cell), direction, numRetries - 1); + } + }); + }); + }; + var tryAgain = function (bridge, element, offset, move, direction) { + return Rectangles.getBoxAt(bridge, element, offset).bind(function (box) { + return tryAt(bridge, direction, move(box, Retries.getJumpSize())); + }); + }; + var tryAt = function (bridge, direction, box) { + if (platform$1.browser.isChrome() || platform$1.browser.isSafari() || platform$1.browser.isFirefox() || platform$1.browser.isEdge()) { + return direction.otherRetry(bridge, box); + } else if (platform$1.browser.isIE()) { + return direction.ieRetry(bridge, box); + } else { + return Option.none(); + } + }; + var tryCursor = function (bridge, isRoot, element, offset, direction) { + return Rectangles.getBoxAt(bridge, element, offset).bind(function (box) { + return tryAt(bridge, direction, box); + }); + }; + var handle$2 = function (bridge, isRoot, direction) { + return findSpot(bridge, isRoot, direction).bind(function (spot) { + return scan(bridge, isRoot, spot.element(), spot.offset(), direction, MAX_RETRIES).map(bridge.fromSitus); + }); + }; + var TableKeys = { handle: handle$2 }; + + var detection = PlatformDetection$1.detect(); + var inSameTable = function (elem, table) { + return ancestor$2(elem, function (e) { + return parent(e).exists(function (p) { + return eq(p, table); + }); + }); + }; + var simulate = function (bridge, isRoot, direction, initial, anchor) { + return closest$1(initial, 'td,th', isRoot).bind(function (start) { + return closest$1(start, 'table', isRoot).bind(function (table) { + if (!inSameTable(anchor, table)) { + return Option.none(); + } + return TableKeys.handle(bridge, isRoot, direction).bind(function (range) { + return closest$1(range.finish(), 'td,th', isRoot).map(function (finish) { + return { + start: constant(start), + finish: constant(finish), + range: constant(range) + }; + }); + }); + }); + }); + }; + var navigate = function (bridge, isRoot, direction, initial, anchor, precheck) { + if (detection.browser.isIE()) { + return Option.none(); + } else { + return precheck(initial, isRoot).orThunk(function () { + return simulate(bridge, isRoot, direction, initial, anchor).map(function (info) { + var range = info.range(); + return Response.create(Option.some(Util.makeSitus(range.start(), range.soffset(), range.finish(), range.foffset())), true); + }); + }); + } + }; + var firstUpCheck = function (initial, isRoot) { + return closest$1(initial, 'tr', isRoot).bind(function (startRow) { + return closest$1(startRow, 'table', isRoot).bind(function (table) { + var rows = descendants$1(table, 'tr'); + if (eq(startRow, rows[0])) { + return seekLeft$1(table, function (element) { + return last$1(element).isSome(); + }, isRoot).map(function (last) { + var lastOffset = getEnd(last); + return Response.create(Option.some(Util.makeSitus(last, lastOffset, last, lastOffset)), true); + }); + } else { + return Option.none(); + } + }); + }); + }; + var lastDownCheck = function (initial, isRoot) { + return closest$1(initial, 'tr', isRoot).bind(function (startRow) { + return closest$1(startRow, 'table', isRoot).bind(function (table) { + var rows = descendants$1(table, 'tr'); + if (eq(startRow, rows[rows.length - 1])) { + return seekRight$1(table, function (element) { + return first(element).isSome(); + }, isRoot).map(function (first) { + return Response.create(Option.some(Util.makeSitus(first, 0, first, 0)), true); + }); + } else { + return Option.none(); + } + }); + }); + }; + var select = function (bridge, container, isRoot, direction, initial, anchor, selectRange) { + return simulate(bridge, isRoot, direction, initial, anchor).bind(function (info) { + return KeySelection.detect(container, isRoot, info.start(), info.finish(), selectRange); + }); + }; + var VerticalMovement = { + navigate: navigate, + select: select, + firstUpCheck: firstUpCheck, + lastDownCheck: lastDownCheck + }; + + var findCell = function (target, isRoot) { + return closest$1(target, 'td,th', isRoot); + }; + function MouseSelection (bridge, container, isRoot, annotations) { + var cursor = Option.none(); + var clearState = function () { + cursor = Option.none(); + }; + var mousedown = function (event) { + annotations.clear(container); + cursor = findCell(event.target(), isRoot); + }; + var mouseover = function (event) { + cursor.each(function (start) { + annotations.clear(container); + findCell(event.target(), isRoot).each(function (finish) { + CellSelection.identify(start, finish, isRoot).each(function (cellSel) { + var boxes = cellSel.boxes().getOr([]); + if (boxes.length > 1 || boxes.length === 1 && !eq(start, finish)) { + annotations.selectRange(container, boxes, cellSel.start(), cellSel.finish()); + bridge.selectContents(finish); + } + }); + }); + }); + }; + var mouseup = function (_event) { + cursor.each(clearState); + }; + return { + mousedown: mousedown, + mouseover: mouseover, + mouseup: mouseup + }; + } + + var down = { + traverse: nextSibling, + gather: after$5, + relative: Situ.before, + otherRetry: Retries.tryDown, + ieRetry: Retries.ieTryDown, + failure: BeforeAfter.failedDown + }; + var up = { + traverse: prevSibling, + gather: before$4, + relative: Situ.before, + otherRetry: Retries.tryUp, + ieRetry: Retries.ieTryUp, + failure: BeforeAfter.failedUp + }; + var KeyDirection = { + down: down, + up: up + }; + + var isKey = function (key) { + return function (keycode) { + return keycode === key; + }; + }; + var isUp = isKey(38); + var isDown = isKey(40); + var isNavigation = function (keycode) { + return keycode >= 37 && keycode <= 40; + }; + var SelectionKeys = { + ltr: { + isBackward: isKey(37), + isForward: isKey(39) + }, + rtl: { + isBackward: isKey(39), + isForward: isKey(37) + }, + isUp: isUp, + isDown: isDown, + isNavigation: isNavigation + }; + + var toRaw = function (sr) { + return { + left: sr.left(), + top: sr.top(), + right: sr.right(), + bottom: sr.bottom(), + width: sr.width(), + height: sr.height() + }; + }; + var Rect = { toRaw: toRaw }; + + var isSafari = PlatformDetection$1.detect().browser.isSafari(); + var get$a = function (_DOC) { + var doc = _DOC !== undefined ? _DOC.dom() : domGlobals.document; + var x = doc.body.scrollLeft || doc.documentElement.scrollLeft; + var y = doc.body.scrollTop || doc.documentElement.scrollTop; + return Position(x, y); + }; + var by = function (x, y, _DOC) { + var doc = _DOC !== undefined ? _DOC.dom() : domGlobals.document; + var win = doc.defaultView; + win.scrollBy(x, y); + }; + + var WindowBridge = function (win) { + var elementFromPoint = function (x, y) { + return Element.fromPoint(Element.fromDom(win.document), x, y); + }; + var getRect = function (element) { + return element.dom().getBoundingClientRect(); + }; + var getRangedRect = function (start, soffset, finish, foffset) { + var sel = Selection.exact(start, soffset, finish, foffset); + return getFirstRect$1(win, sel).map(Rect.toRaw); + }; + var getSelection = function () { + return get$9(win).map(function (exactAdt) { + return Util.convertToRange(win, exactAdt); + }); + }; + var fromSitus = function (situs) { + var relative = Selection.relative(situs.start(), situs.finish()); + return Util.convertToRange(win, relative); + }; + var situsFromPoint = function (x, y) { + return getAtPoint(win, x, y).map(function (exact) { + return Situs.create(exact.start(), exact.soffset(), exact.finish(), exact.foffset()); + }); + }; + var clearSelection = function () { + clear(win); + }; + var selectContents = function (element) { + setToElement(win, element); + }; + var setSelection = function (sel) { + setExact(win, sel.start(), sel.soffset(), sel.finish(), sel.foffset()); + }; + var setRelativeSelection = function (start, finish) { + setRelative(win, start, finish); + }; + var getInnerHeight = function () { + return win.innerHeight; + }; + var getScrollY = function () { + var pos = get$a(Element.fromDom(win.document)); + return pos.top(); + }; + var scrollBy = function (x, y) { + by(x, y, Element.fromDom(win.document)); + }; + return { + elementFromPoint: elementFromPoint, + getRect: getRect, + getRangedRect: getRangedRect, + getSelection: getSelection, + fromSitus: fromSitus, + situsFromPoint: situsFromPoint, + clearSelection: clearSelection, + setSelection: setSelection, + setRelativeSelection: setRelativeSelection, + selectContents: selectContents, + getInnerHeight: getInnerHeight, + getScrollY: getScrollY, + scrollBy: scrollBy + }; + }; + + var rc = Immutable('rows', 'cols'); + var mouse = function (win, container, isRoot, annotations) { + var bridge = WindowBridge(win); + var handlers = MouseSelection(bridge, container, isRoot, annotations); + return { + mousedown: handlers.mousedown, + mouseover: handlers.mouseover, + mouseup: handlers.mouseup + }; + }; + var keyboard = function (win, container, isRoot, annotations) { + var bridge = WindowBridge(win); + var clearToNavigate = function () { + annotations.clear(container); + return Option.none(); + }; + var keydown = function (event, start, soffset, finish, foffset, direction) { + var realEvent = event.raw(); + var keycode = realEvent.which; + var shiftKey = realEvent.shiftKey === true; + var handler = CellSelection.retrieve(container, annotations.selectedSelector()).fold(function () { + if (SelectionKeys.isDown(keycode) && shiftKey) { + return curry(VerticalMovement.select, bridge, container, isRoot, KeyDirection.down, finish, start, annotations.selectRange); + } else if (SelectionKeys.isUp(keycode) && shiftKey) { + return curry(VerticalMovement.select, bridge, container, isRoot, KeyDirection.up, finish, start, annotations.selectRange); + } else if (SelectionKeys.isDown(keycode)) { + return curry(VerticalMovement.navigate, bridge, isRoot, KeyDirection.down, finish, start, VerticalMovement.lastDownCheck); + } else if (SelectionKeys.isUp(keycode)) { + return curry(VerticalMovement.navigate, bridge, isRoot, KeyDirection.up, finish, start, VerticalMovement.firstUpCheck); + } else { + return Option.none; + } + }, function (selected) { + var update = function (attempts) { + return function () { + var navigation = findMap(attempts, function (delta) { + return KeySelection.update(delta.rows(), delta.cols(), container, selected, annotations); + }); + return navigation.fold(function () { + return CellSelection.getEdges(container, annotations.firstSelectedSelector(), annotations.lastSelectedSelector()).map(function (edges) { + var relative = SelectionKeys.isDown(keycode) || direction.isForward(keycode) ? Situ.after : Situ.before; + bridge.setRelativeSelection(Situ.on(edges.first(), 0), relative(edges.table())); + annotations.clear(container); + return Response.create(Option.none(), true); + }); + }, function (_) { + return Option.some(Response.create(Option.none(), true)); + }); + }; + }; + if (SelectionKeys.isDown(keycode) && shiftKey) { + return update([rc(+1, 0)]); + } else if (SelectionKeys.isUp(keycode) && shiftKey) { + return update([rc(-1, 0)]); + } else if (direction.isBackward(keycode) && shiftKey) { + return update([ + rc(0, -1), + rc(-1, 0) + ]); + } else if (direction.isForward(keycode) && shiftKey) { + return update([ + rc(0, +1), + rc(+1, 0) + ]); + } else if (SelectionKeys.isNavigation(keycode) && shiftKey === false) { + return clearToNavigate; + } else { + return Option.none; + } + }); + return handler(); + }; + var keyup = function (event, start, soffset, finish, foffset) { + return CellSelection.retrieve(container, annotations.selectedSelector()).fold(function () { + var realEvent = event.raw(); + var keycode = realEvent.which; + var shiftKey = realEvent.shiftKey === true; + if (shiftKey === false) { + return Option.none(); + } + if (SelectionKeys.isNavigation(keycode)) { + return KeySelection.sync(container, isRoot, start, soffset, finish, foffset, annotations.selectRange); + } else { + return Option.none(); + } + }, Option.none); + }; + return { + keydown: keydown, + keyup: keyup + }; + }; + var InputHandlers = { + mouse: mouse, + keyboard: keyboard + }; + + var remove$7 = function (element, classes) { + each(classes, function (x) { + remove$5(element, x); + }); + }; + + var addClass = function (clazz) { + return function (element) { + add$2(element, clazz); + }; + }; + var removeClasses = function (classes) { + return function (element) { + remove$7(element, classes); + }; + }; + + var byClass = function (ephemera) { + var addSelectionClass = addClass(ephemera.selected()); + var removeSelectionClasses = removeClasses([ + ephemera.selected(), + ephemera.lastSelected(), + ephemera.firstSelected() + ]); + var clear = function (container) { + var sels = descendants$1(container, ephemera.selectedSelector()); + each(sels, removeSelectionClasses); + }; + var selectRange = function (container, cells, start, finish) { + clear(container); + each(cells, addSelectionClass); + add$2(start, ephemera.firstSelected()); + add$2(finish, ephemera.lastSelected()); + }; + return { + clear: clear, + selectRange: selectRange, + selectedSelector: ephemera.selectedSelector, + firstSelectedSelector: ephemera.firstSelectedSelector, + lastSelectedSelector: ephemera.lastSelectedSelector + }; + }; + var byAttr = function (ephemera) { + var removeSelectionAttributes = function (element) { + remove(element, ephemera.selected()); + remove(element, ephemera.firstSelected()); + remove(element, ephemera.lastSelected()); + }; + var addSelectionAttribute = function (element) { + set(element, ephemera.selected(), '1'); + }; + var clear = function (container) { + var sels = descendants$1(container, ephemera.selectedSelector()); + each(sels, removeSelectionAttributes); + }; + var selectRange = function (container, cells, start, finish) { + clear(container); + each(cells, addSelectionAttribute); + set(start, ephemera.firstSelected(), '1'); + set(finish, ephemera.lastSelected(), '1'); + }; + return { + clear: clear, + selectRange: selectRange, + selectedSelector: ephemera.selectedSelector, + firstSelectedSelector: ephemera.firstSelectedSelector, + lastSelectedSelector: ephemera.lastSelectedSelector + }; + }; + var SelectionAnnotation = { + byClass: byClass, + byAttr: byAttr + }; + + var hasInternalTarget = function (e) { + return has$1(Element.fromDom(e.target), 'ephox-snooker-resizer-bar') === false; + }; + function CellSelection$1 (editor, lazyResize) { + var handlerStruct = MixedBag([ + 'mousedown', + 'mouseover', + 'mouseup', + 'keyup', + 'keydown' + ], []); + var handlers = Option.none(); + var annotations = SelectionAnnotation.byAttr(Ephemera); + editor.on('init', function (e) { + var win = editor.getWin(); + var body = getBody$1(editor); + var isRoot = getIsRoot(editor); + var syncSelection = function () { + var sel = editor.selection; + var start = Element.fromDom(sel.getStart()); + var end = Element.fromDom(sel.getEnd()); + var shared = DomParent.sharedOne(TableLookup.table, [ + start, + end + ]); + shared.fold(function () { + annotations.clear(body); + }, noop); + }; + var mouseHandlers = InputHandlers.mouse(win, body, isRoot, annotations); + var keyHandlers = InputHandlers.keyboard(win, body, isRoot, annotations); + var hasShiftKey = function (event) { + return event.raw().shiftKey === true; + }; + var handleResponse = function (event, response) { + if (!hasShiftKey(event)) { + return; + } + if (response.kill()) { + event.kill(); + } + response.selection().each(function (ns) { + var relative = Selection.relative(ns.start(), ns.finish()); + var rng = asLtrRange(win, relative); + editor.selection.setRng(rng); + }); + }; + var keyup = function (event) { + var wrappedEvent = wrapEvent(event); + if (wrappedEvent.raw().shiftKey && SelectionKeys.isNavigation(wrappedEvent.raw().which)) { + var rng = editor.selection.getRng(); + var start = Element.fromDom(rng.startContainer); + var end = Element.fromDom(rng.endContainer); + keyHandlers.keyup(wrappedEvent, start, rng.startOffset, end, rng.endOffset).each(function (response) { + handleResponse(wrappedEvent, response); + }); + } + }; + var keydown = function (event) { + var wrappedEvent = wrapEvent(event); + lazyResize().each(function (resize) { + resize.hideBars(); + }); + var rng = editor.selection.getRng(); + var startContainer = Element.fromDom(editor.selection.getStart()); + var start = Element.fromDom(rng.startContainer); + var end = Element.fromDom(rng.endContainer); + var direction = Direction.directionAt(startContainer).isRtl() ? SelectionKeys.rtl : SelectionKeys.ltr; + keyHandlers.keydown(wrappedEvent, start, rng.startOffset, end, rng.endOffset, direction).each(function (response) { + handleResponse(wrappedEvent, response); + }); + lazyResize().each(function (resize) { + resize.showBars(); + }); + }; + var isMouseEvent = function (event) { + return event.hasOwnProperty('x') && event.hasOwnProperty('y'); + }; + var wrapEvent = function (event) { + var target = Element.fromDom(event.target); + var stop = function () { + event.stopPropagation(); + }; + var prevent = function () { + event.preventDefault(); + }; + var kill = compose(prevent, stop); + return { + target: constant(target), + x: constant(isMouseEvent(event) ? event.x : null), + y: constant(isMouseEvent(event) ? event.y : null), + stop: stop, + prevent: prevent, + kill: kill, + raw: constant(event) + }; + }; + var isLeftMouse = function (raw) { + return raw.button === 0; + }; + var isLeftButtonPressed = function (raw) { + if (raw.buttons === undefined) { + return true; + } + if (global$2.ie && global$2.ie >= 12 && raw.buttons === 0) { + return true; + } + return (raw.buttons & 1) !== 0; + }; + var mouseDown = function (e) { + if (isLeftMouse(e) && hasInternalTarget(e)) { + mouseHandlers.mousedown(wrapEvent(e)); + } + }; + var mouseOver = function (e) { + if (isLeftButtonPressed(e) && hasInternalTarget(e)) { + mouseHandlers.mouseover(wrapEvent(e)); + } + }; + var mouseUp = function (e) { + if (isLeftMouse(e) && hasInternalTarget(e)) { + mouseHandlers.mouseup(wrapEvent(e)); + } + }; + editor.on('mousedown', mouseDown); + editor.on('mouseover', mouseOver); + editor.on('mouseup', mouseUp); + editor.on('keyup', keyup); + editor.on('keydown', keydown); + editor.on('nodechange', syncSelection); + handlers = Option.some(handlerStruct({ + mousedown: mouseDown, + mouseover: mouseOver, + mouseup: mouseUp, + keyup: keyup, + keydown: keydown + })); + }); + var destroy = function () { + handlers.each(function (handlers) { + }); + }; + return { + clear: annotations.clear, + destroy: destroy + }; + } + + var Selections = function (editor) { + var get = function () { + var body = getBody$1(editor); + return TableSelection.retrieve(body, Ephemera.selectedSelector()).fold(function () { + if (editor.selection.getStart() === undefined) { + return SelectionTypes.none(); + } else { + return SelectionTypes.single(editor.selection); + } + }, function (cells) { + return SelectionTypes.multiple(cells); + }); + }; + return { get: get }; + }; + + var each$4 = global$1.each; + var addButtons = function (editor) { + var menuItems = []; + each$4('inserttable tableprops deletetable | cell row column'.split(' '), function (name) { + if (name === '|') { + menuItems.push({ text: '-' }); + } else { + menuItems.push(editor.menuItems[name]); + } + }); + editor.addButton('table', { + type: 'menubutton', + title: 'Table', + menu: menuItems + }); + function cmd(command) { + return function () { + editor.execCommand(command); + }; + } + editor.addButton('tableprops', { + title: 'Table properties', + onclick: cmd('mceTableProps'), + icon: 'table' + }); + editor.addButton('tabledelete', { + title: 'Delete table', + onclick: cmd('mceTableDelete') + }); + editor.addButton('tablecellprops', { + title: 'Cell properties', + onclick: cmd('mceTableCellProps') + }); + editor.addButton('tablemergecells', { + title: 'Merge cells', + onclick: cmd('mceTableMergeCells') + }); + editor.addButton('tablesplitcells', { + title: 'Split cell', + onclick: cmd('mceTableSplitCells') + }); + editor.addButton('tableinsertrowbefore', { + title: 'Insert row before', + onclick: cmd('mceTableInsertRowBefore') + }); + editor.addButton('tableinsertrowafter', { + title: 'Insert row after', + onclick: cmd('mceTableInsertRowAfter') + }); + editor.addButton('tabledeleterow', { + title: 'Delete row', + onclick: cmd('mceTableDeleteRow') + }); + editor.addButton('tablerowprops', { + title: 'Row properties', + onclick: cmd('mceTableRowProps') + }); + editor.addButton('tablecutrow', { + title: 'Cut row', + onclick: cmd('mceTableCutRow') + }); + editor.addButton('tablecopyrow', { + title: 'Copy row', + onclick: cmd('mceTableCopyRow') + }); + editor.addButton('tablepasterowbefore', { + title: 'Paste row before', + onclick: cmd('mceTablePasteRowBefore') + }); + editor.addButton('tablepasterowafter', { + title: 'Paste row after', + onclick: cmd('mceTablePasteRowAfter') + }); + editor.addButton('tableinsertcolbefore', { + title: 'Insert column before', + onclick: cmd('mceTableInsertColBefore') + }); + editor.addButton('tableinsertcolafter', { + title: 'Insert column after', + onclick: cmd('mceTableInsertColAfter') + }); + editor.addButton('tabledeletecol', { + title: 'Delete column', + onclick: cmd('mceTableDeleteCol') + }); + }; + var addToolbars = function (editor) { + var isTable = function (table) { + var selectorMatched = editor.dom.is(table, 'table') && editor.getBody().contains(table); + return selectorMatched; + }; + var toolbar = getToolbar(editor); + if (toolbar.length > 0) { + editor.addContextToolbar(isTable, toolbar.join(' ')); + } + }; + var Buttons = { + addButtons: addButtons, + addToolbars: addToolbars + }; + + var addMenuItems = function (editor, selections) { + var targets = Option.none(); + var tableCtrls = []; + var cellCtrls = []; + var mergeCtrls = []; + var unmergeCtrls = []; + var noTargetDisable = function (ctrl) { + ctrl.disabled(true); + }; + var ctrlEnable = function (ctrl) { + ctrl.disabled(false); + }; + var pushTable = function () { + var self = this; + tableCtrls.push(self); + targets.fold(function () { + noTargetDisable(self); + }, function (targets) { + ctrlEnable(self); + }); + }; + var pushCell = function () { + var self = this; + cellCtrls.push(self); + targets.fold(function () { + noTargetDisable(self); + }, function (targets) { + ctrlEnable(self); + }); + }; + var pushMerge = function () { + var self = this; + mergeCtrls.push(self); + targets.fold(function () { + noTargetDisable(self); + }, function (targets) { + self.disabled(targets.mergable().isNone()); + }); + }; + var pushUnmerge = function () { + var self = this; + unmergeCtrls.push(self); + targets.fold(function () { + noTargetDisable(self); + }, function (targets) { + self.disabled(targets.unmergable().isNone()); + }); + }; + var setDisabledCtrls = function () { + targets.fold(function () { + each(tableCtrls, noTargetDisable); + each(cellCtrls, noTargetDisable); + each(mergeCtrls, noTargetDisable); + each(unmergeCtrls, noTargetDisable); + }, function (targets) { + each(tableCtrls, ctrlEnable); + each(cellCtrls, ctrlEnable); + each(mergeCtrls, function (mergeCtrl) { + mergeCtrl.disabled(targets.mergable().isNone()); + }); + each(unmergeCtrls, function (unmergeCtrl) { + unmergeCtrl.disabled(targets.unmergable().isNone()); + }); + }); + }; + editor.on('init', function () { + editor.on('nodechange', function (e) { + var cellOpt = Option.from(editor.dom.getParent(editor.selection.getStart(), 'th,td')); + targets = cellOpt.bind(function (cellDom) { + var cell = Element.fromDom(cellDom); + var table = TableLookup.table(cell); + return table.map(function (table) { + return TableTargets.forMenu(selections, table, cell); + }); + }); + setDisabledCtrls(); + }); + }); + var generateTableGrid = function () { + var html = ''; + html = ''; + for (var y = 0; y < 10; y++) { + html += ''; + for (var x = 0; x < 10; x++) { + html += ''; + } + html += ''; + } + html += '
'; + html += '

'; + return html; + }; + var selectGrid = function (editor, tx, ty, control) { + var table = control.getEl().getElementsByTagName('table')[0]; + var x, y, focusCell, cell, active; + var rtl = control.isRtl() || control.parent().rel === 'tl-tr'; + table.nextSibling.innerHTML = tx + 1 + ' x ' + (ty + 1); + if (rtl) { + tx = 9 - tx; + } + for (y = 0; y < 10; y++) { + for (x = 0; x < 10; x++) { + cell = table.rows[y].childNodes[x].firstChild; + active = (rtl ? x >= tx : x <= tx) && y <= ty; + editor.dom.toggleClass(cell, 'mce-active', active); + if (active) { + focusCell = cell; + } + } + } + return focusCell.parentNode; + }; + var insertTable = hasTableGrid(editor) === false ? { + text: 'Table', + icon: 'table', + context: 'table', + onclick: cmd('mceInsertTable') + } : { + text: 'Table', + icon: 'table', + context: 'table', + ariaHideMenu: true, + onclick: function (e) { + if (e.aria) { + this.parent().hideAll(); + e.stopImmediatePropagation(); + editor.execCommand('mceInsertTable'); + } + }, + onshow: function () { + selectGrid(editor, 0, 0, this.menu.items()[0]); + }, + onhide: function () { + var elements = this.menu.items()[0].getEl().getElementsByTagName('a'); + editor.dom.removeClass(elements, 'mce-active'); + editor.dom.addClass(elements[0], 'mce-active'); + }, + menu: [{ + type: 'container', + html: generateTableGrid(), + onPostRender: function () { + this.lastX = this.lastY = 0; + }, + onmousemove: function (e) { + var target = e.target; + var x, y; + if (target.tagName.toUpperCase() === 'A') { + x = parseInt(target.getAttribute('data-mce-x'), 10); + y = parseInt(target.getAttribute('data-mce-y'), 10); + if (this.isRtl() || this.parent().rel === 'tl-tr') { + x = 9 - x; + } + if (x !== this.lastX || y !== this.lastY) { + selectGrid(editor, x, y, e.control); + this.lastX = x; + this.lastY = y; + } + } + }, + onclick: function (e) { + var self = this; + if (e.target.tagName.toUpperCase() === 'A') { + e.preventDefault(); + e.stopPropagation(); + self.parent().cancel(); + editor.undoManager.transact(function () { + InsertTable.insert(editor, self.lastX + 1, self.lastY + 1); + }); + editor.addVisual(); + } + } + }] + }; + function cmd(command) { + return function () { + editor.execCommand(command); + }; + } + var tableProperties = { + text: 'Table properties', + context: 'table', + onPostRender: pushTable, + onclick: cmd('mceTableProps') + }; + var deleteTable = { + text: 'Delete table', + context: 'table', + onPostRender: pushTable, + cmd: 'mceTableDelete' + }; + var row = { + text: 'Row', + context: 'table', + menu: [ + { + text: 'Insert row before', + onclick: cmd('mceTableInsertRowBefore'), + onPostRender: pushCell + }, + { + text: 'Insert row after', + onclick: cmd('mceTableInsertRowAfter'), + onPostRender: pushCell + }, + { + text: 'Delete row', + onclick: cmd('mceTableDeleteRow'), + onPostRender: pushCell + }, + { + text: 'Row properties', + onclick: cmd('mceTableRowProps'), + onPostRender: pushCell + }, + { text: '-' }, + { + text: 'Cut row', + onclick: cmd('mceTableCutRow'), + onPostRender: pushCell + }, + { + text: 'Copy row', + onclick: cmd('mceTableCopyRow'), + onPostRender: pushCell + }, + { + text: 'Paste row before', + onclick: cmd('mceTablePasteRowBefore'), + onPostRender: pushCell + }, + { + text: 'Paste row after', + onclick: cmd('mceTablePasteRowAfter'), + onPostRender: pushCell + } + ] + }; + var column = { + text: 'Column', + context: 'table', + menu: [ + { + text: 'Insert column before', + onclick: cmd('mceTableInsertColBefore'), + onPostRender: pushCell + }, + { + text: 'Insert column after', + onclick: cmd('mceTableInsertColAfter'), + onPostRender: pushCell + }, + { + text: 'Delete column', + onclick: cmd('mceTableDeleteCol'), + onPostRender: pushCell + } + ] + }; + var cell = { + separator: 'before', + text: 'Cell', + context: 'table', + menu: [ + { + text: 'Cell properties', + onclick: cmd('mceTableCellProps'), + onPostRender: pushCell + }, + { + text: 'Merge cells', + onclick: cmd('mceTableMergeCells'), + onPostRender: pushMerge + }, + { + text: 'Split cell', + onclick: cmd('mceTableSplitCells'), + onPostRender: pushUnmerge + } + ] + }; + editor.addMenuItem('inserttable', insertTable); + editor.addMenuItem('tableprops', tableProperties); + editor.addMenuItem('deletetable', deleteTable); + editor.addMenuItem('row', row); + editor.addMenuItem('column', column); + editor.addMenuItem('cell', cell); + }; + var MenuItems = { addMenuItems: addMenuItems }; + + var getClipboardRows = function (clipboardRows) { + return clipboardRows.get().fold(function () { + return; + }, function (rows) { + return map(rows, function (row) { + return row.dom(); + }); + }); + }; + var setClipboardRows = function (rows, clipboardRows) { + var sugarRows = map(rows, Element.fromDom); + clipboardRows.set(Option.from(sugarRows)); + }; + var getApi = function (editor, clipboardRows) { + return { + insertTable: function (columns, rows) { + return InsertTable.insert(editor, columns, rows); + }, + setClipboardRows: function (rows) { + return setClipboardRows(rows, clipboardRows); + }, + getClipboardRows: function () { + return getClipboardRows(clipboardRows); + } + }; + }; + + function Plugin(editor) { + var resizeHandler = ResizeHandler(editor); + var cellSelection = CellSelection$1(editor, resizeHandler.lazyResize); + var actions = TableActions(editor, resizeHandler.lazyWire); + var selections = Selections(editor); + var clipboardRows = Cell(Option.none()); + Commands.registerCommands(editor, actions, cellSelection, selections, clipboardRows); + Clipboard.registerEvents(editor, selections, actions, cellSelection); + MenuItems.addMenuItems(editor, selections); + Buttons.addButtons(editor); + Buttons.addToolbars(editor); + editor.on('PreInit', function () { + editor.serializer.addTempAttr(Ephemera.firstSelected()); + editor.serializer.addTempAttr(Ephemera.lastSelected()); + }); + if (hasTabNavigation(editor)) { + editor.on('keydown', function (e) { + TabContext.handle(e, editor, actions, resizeHandler.lazyWire); + }); + } + editor.on('remove', function () { + resizeHandler.destroy(); + cellSelection.destroy(); + }); + return getApi(editor, clipboardRows); + } + global.add('table', Plugin); + function Plugin$1 () { + } + + return Plugin$1; + +}(window)); +})(); diff --git a/wp-content/plugins/tinymce-advanced/mce/table/plugin.min.js b/wp-content/plugins/tinymce-advanced/mce/table/plugin.min.js new file mode 100644 index 0000000..80d078b --- /dev/null +++ b/wp-content/plugins/tinymce-advanced/mce/table/plugin.min.js @@ -0,0 +1 @@ +!function(m){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),y=function(){},x=function(n,r){return function(){for(var e=[],t=0;tn.maxRow()||sn.maxCol()||(mn.getAt(t,l,s).filter(r).isNone()?(o=f,i=e[l].element(),u=xe.fromTag("td"),Rt(u,xe.fromTag("br")),(o?Rt:Ct)(i,u)):f=!0)}(m,g,h,d),o=e,f=h,s=A(tn.firstLayer(o,"tr"),function(e){return 0===e.dom().childElementCount}),k(s,Nt),f.minCol()!==f.maxCol()&&f.minRow()!==f.maxRow()||k(tn.firstLayer(o,"th,td"),function(e){he(e,"rowspan"),he(e,"colspan")}),he(o,"width"),he(o,"height"),Ae(o,"width"),Ae(o,"height"),e},pn=(Gt=le,Yt="text",{get:function(e){if(!Gt(e))throw new Error("Can only get "+Yt+" value of a "+Yt+" node");return Xt(e).getOr("")},getOption:Xt=function(e){return Gt(e)?R.from(e.dom().nodeValue):R.none()},set:function(e,t){if(!Gt(e))throw new Error("Can only set raw "+Yt+" value of a "+Yt+" node");e.dom().nodeValue=t}}),vn=function(e){return pn.get(e)},bn=function(e){return pn.getOption(e)},wn=function(e,t){pn.set(e,t)},yn=function(e){return"img"===oe(e)?1:bn(e).fold(function(){return bt(e).length},function(e){return e.length})},xn=["img","br"],Cn=function(e){return bn(e).filter(function(e){return 0!==e.trim().length||-1=e.startCol()&&t.column()+t.colspan()-1<=e.finishCol()&&t.row()>=e.startRow()&&t.row()+t.rowspan()-1<=e.finishRow()},_n=function(e,t){var n=t.column(),r=t.column()+t.colspan()-1,o=t.row(),i=t.row()+t.rowspan()-1;return n<=e.finishCol()&&r>=e.startCol()&&o<=e.finishRow()&&i>=e.startRow()},Ln=function(e,t){for(var n=!0,r=b(Mn,t),o=t.startRow();o<=t.finishRow();o++)for(var i=t.startCol();i<=t.finishCol();i++)n=n&&mn.getAt(e,o,i).exists(r);return n?R.some(t):R.none()},Fn=function(e,t,n){var r=mn.findItem(e,t,ft),o=mn.findItem(e,n,ft);return r.bind(function(r){return o.map(function(e){return t=r,n=e,jt(Math.min(t.row(),n.row()),Math.min(t.column(),n.column()),Math.max(t.row()+t.rowspan()-1,n.row()+n.rowspan()-1),Math.max(t.column()+t.colspan()-1,n.column()+n.colspan()-1));var t,n})})},jn=Fn,zn=function(t,e,n){return Fn(t,e,n).bind(function(e){return Ln(t,e)})},Hn=function(r,e,o,i){return mn.findItem(r,e,ft).bind(function(e){var t=0=t.length-1)return R.none();var e=t[n].fold(function(){var e=F(t.slice(0,n));return xo(e,function(e,t){return e.map(function(e){return{value:e,delta:t+1}})})},function(e){return R.some({value:e,delta:0})}),r=t[n+1].fold(function(){var e=t.slice(n+1);return xo(e,function(e,t){return e.map(function(e){return{value:e,delta:t+1}})})},function(e){return R.some({value:e,delta:1})});return e.bind(function(n){return r.map(function(e){var t=e.delta+n.delta;return Math.abs(e.value-n.value)/t})})},Bo=function(e,t,n){var r=e();return B(r,t).orThunk(function(){return R.from(r[0]).orThunk(n)}).map(function(e){return e.element()})},Wo=function(n){var e=n.grid(),t=Po(0,e.columns()),r=Po(0,e.rows());return E(t,function(t){return Bo(function(){return _(r,function(e){return mn.getAt(n,e,t).filter(function(e){return e.column()===t}).fold(C([]),function(e){return[e]})})},function(e){return 1===e.colspan()},function(){return mn.getAt(n,0,t)})})},Mo=function(n){var e=n.grid(),t=Po(0,e.rows()),r=Po(0,e.columns());return E(t,function(t){return Bo(function(){return _(r,function(e){return mn.getAt(n,t,e).filter(function(e){return e.row()===t}).fold(C([]),function(e){return[e]})})},function(e){return 1===e.rowspan()},function(){return mn.getAt(n,t,0)})})},_o=function(e){var t=e.replace(/\./g,"-");return{resolve:function(e){return t+"-"+e}}},Lo={resolve:_o("ephox-snooker").resolve},Fo=function(e,t,n,r,o){var i=xe.fromTag("div");return Oe(i,{position:"absolute",left:t-r/2+"px",top:n+"px",height:o+"px",width:r+"px"}),de(i,{"data-column":e,role:"presentation"}),i},jo=function(e,t,n,r,o){var i=xe.fromTag("div");return Oe(i,{position:"absolute",left:t+"px",top:n-o/2+"px",height:o+"px",width:r+"px"}),de(i,{"data-row":e,role:"presentation"}),i},zo=Lo.resolve("resizer-bar"),Ho=Lo.resolve("resizer-rows"),Uo=Lo.resolve("resizer-cols"),qo=function(e){var t=qt(e.parent(),"."+zo);k(t,Nt)},Vo=function(n,e,r){var o=n.origin();k(e,function(e,t){e.each(function(e){var t=r(o,e);Eo(t,zo),Rt(n.parent(),t)})})},Go=function(e,t,n,r,o,i){var u,a,c,l,f=no(t),s=0=t.length||e.column()>ni.cellLength(t[0]))return pi.error("invalid start address out of table bounds, row: "+e.row()+", column: "+e.column());var r=t.slice(e.row()),o=r[0].cells().slice(e.column()),i=ni.cellLength(n[0]),u=n.length;return pi.value({rowDelta:C(r.length-u),colDelta:C(o.length-i)})},xi=function(e,t){var n=ni.cellLength(e[0]),r=ni.cellLength(t[0]);return{rowDelta:C(0),colDelta:C(n-r)}},Ci=function(e,t,n){var r=t.colDelta()<0?wi:o;return(t.rowDelta()<0?bi:o)(r(e,Math.abs(t.colDelta()),n),Math.abs(t.rowDelta()),n)},Ri=function(e,t,n,r){if(0===e.length)return e;for(var o=t.startRow();o<=t.finishRow();o++)for(var i=t.startCol();i<=t.finishCol();i++)ni.mutateCell(e[o],i,Mt(r(),!1));return e},Si=function(e,t,n,r){for(var o=!0,i=0;i',t.insertBefore(r,t.firstChild)),ga(e,t),o.align&&da(e,t,o.align),e.focus(),e.addVisual()})},Pa=function(t,e){var n,r,o,i,u,a,c,l,f,s,d=t.dom,m={};!0===e?(n=d.getParent(t.selection.getStart(),"table"))&&(c=n,l=(a=t).dom,f={width:l.getStyle(c,"width")||l.getAttrib(c,"width"),height:l.getStyle(c,"height")||l.getAttrib(c,"height"),cellspacing:l.getStyle(c,"border-spacing")||l.getAttrib(c,"cellspacing"),cellpadding:l.getAttrib(c,"data-mce-cell-padding")||l.getAttrib(c,"cellpadding")||pa(a.dom,c,"padding"),border:l.getAttrib(c,"data-mce-border")||l.getAttrib(c,"border")||pa(a.dom,c,"border"),borderColor:l.getAttrib(c,"data-mce-border-color"),caption:!!l.select("caption",c)[0],"class":l.getAttrib(c,"class")},sa.each("left center right".split(" "),function(e){a.formatter.matchNode(c,"align"+e)&&(f.align=e)}),Zu(a)&&sa.extend(f,wa.extractAdvancedStyles(l,c)),m=f):(r={label:"Cols",name:"cols"},o={label:"Rows",name:"rows"}),0=e.left&&t<=e.right&&n>=e.top&&n<=e.bottom},Nc=function(n,r,e,t,o){var i=function(e){var t=n.dom().createRange();return t.setStart(r.dom(),e),t.collapse(!0),t},u=vn(r).length,a=function(e,t,n,r,o){if(0===o)return 0;if(t===r)return o-1;for(var i=r,u=1;ur.left&&o.left ("+e.right()+", "+e.bottom()+")"}},Ml=function(e){return Wl.nu({left:e.left,top:e.top,right:e.right,bottom:e.bottom})},_l=function(e,t){return R.some(e.getRect(t))},Ll=function(e,t,n){return ce(t)?_l(e,t).map(Ml):le(t)?(r=e,o=t,i=n,0<=i&&in.right();var t,n})});var n,o,i},Hl={point:Wl.getTop,adjuster:function(e,t,n,r,o){var i=Wl.moveUp(o,5);return Math.abs(n.top()-r.top())<1?jl.retry(i):n.bottom()o.bottom()?jl.retry(i):n.top()===o.bottom()?jl.retry(Wl.moveDown(o,1)):zl(e,t,o)?jl.retry(Wl.translate(i,5,0)):jl.none()},move:Wl.moveDown,gather:Cl},ql=function(n,r,o,i,u){return 0===u?R.some(i):(c=n,l=i.left(),f=r.point(i),c.elementFromPoint(l,f).filter(function(e){return"table"===oe(e)}).isSome()?(t=i,a=u-1,ql(n,e=r,o,e.move(t,5),a)):n.situsFromPoint(i.left(),r.point(i)).bind(function(e){return e.start().fold(R.none,function(t){return Fl(n,t).bind(function(e){return r.adjuster(n,t,e,o,i).fold(R.none,function(e){return ql(n,r,o,e,u-1)})}).orThunk(function(){return R.some(i)})},R.none)}));var e,t,a,c,l,f},Vl=function(t,n,e){var r,o,i,u=t.move(e,5),a=ql(n,t,e,u,100).getOr(u);return(r=t,o=a,i=n,r.point(o)>i.getInnerHeight()?R.some(r.point(o)-i.getInnerHeight()):r.point(o)<0?R.some(-r.point(o)):R.none()).fold(function(){return n.situsFromPoint(a.left(),t.point(a))},function(e){return n.scrollBy(0,e),n.situsFromPoint(a.left(),t.point(a)-e)})},Gl={tryUp:b(Vl,Hl),tryDown:b(Vl,Ul),ieTryUp:function(e,t){return e.situsFromPoint(t.left(),t.top()-5)},ieTryDown:function(e,t){return e.situsFromPoint(t.left(),t.bottom()+5)},getJumpSize:C(5)},Yl=it.detect(),Xl=function(r,o,i,u,a,c){return 0===c?R.none():$l(r,o,i,u,a).bind(function(e){var t=r.fromSitus(e),n=Dl.verify(r,i,u,t.finish(),t.foffset(),a.failure,o);return Dl.cata(n,function(){return R.none()},function(){return R.some(e)},function(e){return ft(i,e)&&0===u?Kl(r,i,u,Wl.moveUp,a):Xl(r,o,e,0,a,c-1)},function(e){return ft(i,e)&&u===yn(e)?Kl(r,i,u,Wl.moveDown,a):Xl(r,o,e,yn(e),a,c-1)})})},Kl=function(t,e,n,r,o){return Ll(t,e,n).bind(function(e){return Jl(t,o,r(e,Gl.getJumpSize()))})},Jl=function(e,t,n){return Yl.browser.isChrome()||Yl.browser.isSafari()||Yl.browser.isFirefox()||Yl.browser.isEdge()?t.otherRetry(e,n):Yl.browser.isIE()?t.ieRetry(e,n):R.none()},$l=function(t,e,n,r,o){return Ll(t,n,r).bind(function(e){return Jl(t,o,e)})},Ql=function(t,n,r){return(o=t,i=n,u=r,o.getSelection().bind(function(r){return Pl(i,r.finish(),r.foffset(),u).fold(function(){return R.some(Rl(r.finish(),r.foffset()))},function(e){var t=o.fromSitus(e),n=Dl.verify(o,r.finish(),r.foffset(),t.finish(),t.foffset(),u.failure,i);return Il(n)})})).bind(function(e){return Xl(t,n,e.element(),e.offset(),r,20).map(t.fromSitus)});var o,i,u},Zl=it.detect(),ef=function(e,t){return Kt(e,function(e){return gt(e).exists(function(e){return ft(e,t)})},n).isSome();var n},tf=function(t,r,o,e,i){return Zt(e,"td,th",r).bind(function(n){return Zt(n,"table",r).bind(function(e){return ef(i,e)?Ql(t,r,o).bind(function(t){return Zt(t.finish(),"td,th",r).map(function(e){return{start:C(n),finish:C(e),range:C(t)}})}):R.none()})})},nf=function(e,t,n,r,o,i){return Zl.browser.isIE()?R.none():i(r,t).orThunk(function(){return tf(e,t,n,r,o).map(function(e){var t=e.range();return rl.create(R.some(il.makeSitus(t.start(),t.soffset(),t.finish(),t.foffset())),!0)})})},rf=function(e,t,n,r,o,i,u){return tf(e,n,r,o,i).bind(function(e){return al.detect(t,n,e.start(),e.finish(),u)})},of=function(e,u){return Zt(e,"tr",u).bind(function(i){return Zt(i,"table",u).bind(function(e){var t,n,r,o=qt(e,"tr");return ft(i,o[0])?(t=e,n=function(e){return Sn(e).isSome()},r=u,bl(yl,t,n,r)).map(function(e){var t=yn(e);return rl.create(R.some(il.makeSitus(e,t,e,t)),!0)}):R.none()})})},uf=function(e,u){return Zt(e,"tr",u).bind(function(i){return Zt(i,"table",u).bind(function(e){var t,n,r,o=qt(e,"tr");return ft(i,o[o.length-1])?(t=e,n=function(e){return Rn(e).isSome()},r=u,wl(yl,t,n,r)).map(function(e){return rl.create(R.some(il.makeSitus(e,0,e,0)),!0)}):R.none()})})},af=function(e,t){return Zt(e,"td,th",t)},cf={down:{traverse:vt,gather:Cl,relative:pc.before,otherRetry:Gl.tryDown,ieRetry:Gl.ieTryDown,failure:Dl.failedDown},up:{traverse:pt,gather:xl,relative:pc.before,otherRetry:Gl.tryUp,ieRetry:Gl.ieTryUp,failure:Dl.failedUp}},lf=function(t){return function(e){return e===t}},ff=lf(38),sf=lf(40),df={ltr:{isBackward:lf(37),isForward:lf(39)},rtl:{isBackward:lf(39),isForward:lf(37)},isUp:ff,isDown:sf,isNavigation:function(e){return 37<=e&&e<=40}},mf=function(e){return{left:e.left(),top:e.top(),right:e.right(),bottom:e.bottom(),width:e.width(),height:e.height()}},gf=(it.detect().browser.isSafari(),function(a){return{elementFromPoint:function(e,t){return xe.fromPoint(xe.fromDom(a.document),e,t)},getRect:function(e){return e.dom().getBoundingClientRect()},getRangedRect:function(e,t,n,r){var o=bc.exact(e,t,n,r);return Yc(a,o).map(mf)},getSelection:function(){return Gc(a).map(function(e){return il.convertToRange(a,e)})},fromSitus:function(e){var t=bc.relative(e.start(),e.finish());return il.convertToRange(a,t)},situsFromPoint:function(e,t){return Xc(a,e,t).map(function(e){return ol(e.start(),e.soffset(),e.finish(),e.foffset())})},clearSelection:function(){a.getSelection().removeAllRanges()},setSelection:function(e){var t,n,r,o,i,u;t=a,n=e.start(),r=e.soffset(),o=e.finish(),i=e.foffset(),u=Lc(n,r,o,i),Hc(t,u)},setRelativeSelection:function(e,t){var n,r;n=a,r=_c(e,t),Hc(n,r)},selectContents:function(e){Vc(a,e)},getInnerHeight:function(){return a.innerHeight},getScrollY:function(){var e,t,n,r;return(e=xe.fromDom(a.document),t=e!==undefined?e.dom():m.document,n=t.body.scrollLeft||t.documentElement.scrollLeft,r=t.body.scrollTop||t.documentElement.scrollTop,eo(n,r)).top()},scrollBy:function(e,t){var n,r,o;n=e,r=t,((o=xe.fromDom(a.document))!==undefined?o.dom():m.document).defaultView.scrollBy(n,r)}}}),hf=q("rows","cols"),pf={mouse:function(e,t,n,r){var o,i,u,a,c,l,f=gf(e),s=(o=f,i=t,u=n,a=r,c=R.none(),l=function(){c=R.none()},{mousedown:function(e){a.clear(i),c=af(e.target(),u)},mouseover:function(e){c.each(function(r){a.clear(i),af(e.target(),u).each(function(n){sr(r,n,u).each(function(e){var t=e.boxes().getOr([]);(1";for(var n=0;n<10;n++)e+='';e+=""}return e+="",e+=''}(),onPostRender:function(){this.lastX=this.lastY=0},onmousemove:function(e){var t,n,r=e.target;"A"===r.tagName.toUpperCase()&&(t=parseInt(r.getAttribute("data-mce-x"),10),n=parseInt(r.getAttribute("data-mce-y"),10),(this.isRtl()||"tl-tr"===this.parent().rel)&&(t=9-t),t===this.lastX&&n===this.lastY||(s(o,t,n,e.control),this.lastX=t,this.lastY=n))},onclick:function(e){var t=this;"A"===e.target.tagName.toUpperCase()&&(e.preventDefault(),e.stopPropagation(),t.parent().cancel(),o.undoManager.transact(function(){Na(o,t.lastX+1,t.lastY+1)}),o.addVisual())}}]};function m(e){return function(){o.execCommand(e)}}var g={text:"Table properties",context:"table",onPostRender:e,onclick:m("mceTableProps")},h={text:"Delete table",context:"table",onPostRender:e,cmd:"mceTableDelete"},p={text:"Row",context:"table",menu:[{text:"Insert row before",onclick:m("mceTableInsertRowBefore"),onPostRender:t},{text:"Insert row after",onclick:m("mceTableInsertRowAfter"),onPostRender:t},{text:"Delete row",onclick:m("mceTableDeleteRow"),onPostRender:t},{text:"Row properties",onclick:m("mceTableRowProps"),onPostRender:t},{text:"-"},{text:"Cut row",onclick:m("mceTableCutRow"),onPostRender:t},{text:"Copy row",onclick:m("mceTableCopyRow"),onPostRender:t},{text:"Paste row before",onclick:m("mceTablePasteRowBefore"),onPostRender:t},{text:"Paste row after",onclick:m("mceTablePasteRowAfter"),onPostRender:t}]},v={text:"Column",context:"table",menu:[{text:"Insert column before",onclick:m("mceTableInsertColBefore"),onPostRender:t},{text:"Insert column after",onclick:m("mceTableInsertColAfter"),onPostRender:t},{text:"Delete column",onclick:m("mceTableDeleteCol"),onPostRender:t}]},b={separator:"before",text:"Cell",context:"table",menu:[{text:"Cell properties",onclick:m("mceTableCellProps"),onPostRender:t},{text:"Merge cells",onclick:m("mceTableMergeCells"),onPostRender:function(){var t=this;a.push(t),r.fold(function(){l(t)},function(e){t.disabled(e.mergable().isNone())})}},{text:"Split cell",onclick:m("mceTableSplitCells"),onPostRender:function(){var t=this;c.push(t),r.fold(function(){l(t)},function(e){t.disabled(e.unmergable().isNone())})}}]};o.addMenuItem("inserttable",d),o.addMenuItem("tableprops",g),o.addMenuItem("deletetable",h),o.addMenuItem("row",p),o.addMenuItem("column",v),o.addMenuItem("cell",b)},Tf=function(n,r){return{insertTable:function(e,t){return Na(n,e,t)},setClipboardRows:function(e){return t=r,n=E(e,xe.fromDom),void t.set(R.from(n));var t,n},getClipboardRows:function(){return r.get().fold(function(){},function(e){return E(e,function(e){return e.dom()})})}}};e.add("table",function(t){var n,r=cc(t),e=yf(t,r.lazyResize),o=la(t,r.lazyWire),i=(n=t,{get:function(){var e=Fu(n);return hr(e,yr.selectedSelector()).fold(function(){return n.selection.getStart()===undefined?Rr.none():Rr.single(n.selection)},function(e){return Rr.multiple(e)})}}),u=lu(R.none());return Ba(t,o,e,i,u),Ar(t,i,o,e),Sf(t,i),Cf(t),Rf(t),t.on("PreInit",function(){t.serializer.addTempAttr(yr.firstSelected()),t.serializer.addTempAttr(yr.lastSelected())}),t.getParam("table_tab_navigation",!0,"boolean")&&t.on("keydown",function(e){nl(e,t,o,r.lazyWire)}),t.on("remove",function(){r.destroy(),e.destroy()}),Tf(t,u)})}(window); \ No newline at end of file diff --git a/wp-content/plugins/tinymce-advanced/mce/visualblocks/css/visualblocks.css b/wp-content/plugins/tinymce-advanced/mce/visualblocks/css/visualblocks.css new file mode 100644 index 0000000..96e4d7c --- /dev/null +++ b/wp-content/plugins/tinymce-advanced/mce/visualblocks/css/visualblocks.css @@ -0,0 +1,154 @@ +.mce-visualblocks p { + padding-top: 10px; + border: 1px dashed #BBB; + margin-left: 3px; + background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7); + background-repeat: no-repeat; +} + +.mce-visualblocks h1 { + padding-top: 10px; + border: 1px dashed #BBB; + margin-left: 3px; + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==); + background-repeat: no-repeat; +} + +.mce-visualblocks h2 { + padding-top: 10px; + border: 1px dashed #BBB; + margin-left: 3px; + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==); + background-repeat: no-repeat; +} + +.mce-visualblocks h3 { + padding-top: 10px; + border: 1px dashed #BBB; + margin-left: 3px; + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7); + background-repeat: no-repeat; +} + +.mce-visualblocks h4 { + padding-top: 10px; + border: 1px dashed #BBB; + margin-left: 3px; + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==); + background-repeat: no-repeat; +} + +.mce-visualblocks h5 { + padding-top: 10px; + border: 1px dashed #BBB; + margin-left: 3px; + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==); + background-repeat: no-repeat; +} + +.mce-visualblocks h6 { + padding-top: 10px; + border: 1px dashed #BBB; + margin-left: 3px; + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==); + background-repeat: no-repeat; +} + +.mce-visualblocks div:not([data-mce-bogus]) { + padding-top: 10px; + border: 1px dashed #BBB; + margin-left: 3px; + background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7); + background-repeat: no-repeat; +} + +.mce-visualblocks section { + padding-top: 10px; + border: 1px dashed #BBB; + margin: 0 0 1em 3px; + background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=); + background-repeat: no-repeat; +} + +.mce-visualblocks article { + padding-top: 10px; + border: 1px dashed #BBB; + margin: 0 0 1em 3px; + background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7); + background-repeat: no-repeat; +} + +.mce-visualblocks blockquote { + padding-top: 10px; + border: 1px dashed #BBB; + background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7); + background-repeat: no-repeat; +} + +.mce-visualblocks address { + padding-top: 10px; + border: 1px dashed #BBB; + margin: 0 0 1em 3px; + background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=); + background-repeat: no-repeat; +} + +.mce-visualblocks pre { + padding-top: 10px; + border: 1px dashed #BBB; + margin-left: 3px; + background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==); + background-repeat: no-repeat; +} + +.mce-visualblocks figure { + padding-top: 10px; + border: 1px dashed #BBB; + margin: 0 0 1em 3px; + background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7); + background-repeat: no-repeat; +} + +.mce-visualblocks hgroup { + padding-top: 10px; + border: 1px dashed #BBB; + margin: 0 0 1em 3px; + background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7); + background-repeat: no-repeat; +} + +.mce-visualblocks aside { + padding-top: 10px; + border: 1px dashed #BBB; + margin: 0 0 1em 3px; + background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=); + background-repeat: no-repeat; +} + +.mce-visualblocks figcaption { + border: 1px dashed #BBB; +} + +.mce-visualblocks ul { + padding-top: 10px; + border: 1px dashed #BBB; + margin: 0 0 1em 3px; + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==); + background-repeat: no-repeat; +} + +.mce-visualblocks ol { + padding-top: 10px; + border: 1px dashed #BBB; + margin: 0 0 1em 3px; + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==); + background-repeat: no-repeat; +} + +.mce-visualblocks dl { + padding-top: 10px; + border: 1px dashed #BBB; + margin: 0 0 1em 3px; + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==); + background-repeat: no-repeat; +} diff --git a/wp-content/plugins/tinymce-advanced/mce/visualblocks/plugin.js b/wp-content/plugins/tinymce-advanced/mce/visualblocks/plugin.js new file mode 100644 index 0000000..267fb07 --- /dev/null +++ b/wp-content/plugins/tinymce-advanced/mce/visualblocks/plugin.js @@ -0,0 +1,135 @@ +(function () { +var visualblocks = (function () { + 'use strict'; + + var Cell = function (initial) { + var value = initial; + var get = function () { + return value; + }; + var set = function (v) { + value = v; + }; + var clone = function () { + return Cell(get()); + }; + return { + get: get, + set: set, + clone: clone + }; + }; + + var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); + + var fireVisualBlocks = function (editor, state) { + editor.fire('VisualBlocks', { state: state }); + }; + var Events = { fireVisualBlocks: fireVisualBlocks }; + + var isEnabledByDefault = function (editor) { + return editor.getParam('visualblocks_default_state', false); + }; + var getContentCss = function (editor) { + return editor.settings.visualblocks_content_css; + }; + var Settings = { + isEnabledByDefault: isEnabledByDefault, + getContentCss: getContentCss + }; + + var global$1 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils'); + + var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools'); + + var cssId = global$1.DOM.uniqueId(); + var load = function (doc, url) { + var linkElements = global$2.toArray(doc.getElementsByTagName('link')); + var matchingLinkElms = global$2.grep(linkElements, function (head) { + return head.id === cssId; + }); + if (matchingLinkElms.length === 0) { + var linkElm = global$1.DOM.create('link', { + id: cssId, + rel: 'stylesheet', + href: url + }); + doc.getElementsByTagName('head')[0].appendChild(linkElm); + } + }; + var LoadCss = { load: load }; + + var toggleVisualBlocks = function (editor, pluginUrl, enabledState) { + var dom = editor.dom; + var contentCss = Settings.getContentCss(editor); + LoadCss.load(editor.getDoc(), contentCss ? contentCss : pluginUrl + '/css/visualblocks.css'); + dom.toggleClass(editor.getBody(), 'mce-visualblocks'); + enabledState.set(!enabledState.get()); + Events.fireVisualBlocks(editor, enabledState.get()); + }; + var VisualBlocks = { toggleVisualBlocks: toggleVisualBlocks }; + + var register = function (editor, pluginUrl, enabledState) { + editor.addCommand('mceVisualBlocks', function () { + VisualBlocks.toggleVisualBlocks(editor, pluginUrl, enabledState); + }); + }; + var Commands = { register: register }; + + var setup = function (editor, pluginUrl, enabledState) { + editor.on('PreviewFormats AfterPreviewFormats', function (e) { + if (enabledState.get()) { + editor.dom.toggleClass(editor.getBody(), 'mce-visualblocks', e.type === 'afterpreviewformats'); + } + }); + editor.on('init', function () { + if (Settings.isEnabledByDefault(editor)) { + VisualBlocks.toggleVisualBlocks(editor, pluginUrl, enabledState); + } + }); + editor.on('remove', function () { + editor.dom.removeClass(editor.getBody(), 'mce-visualblocks'); + }); + }; + var Bindings = { setup: setup }; + + var toggleActiveState = function (editor, enabledState) { + return function (e) { + var ctrl = e.control; + ctrl.active(enabledState.get()); + editor.on('VisualBlocks', function (e) { + ctrl.active(e.state); + }); + }; + }; + var register$1 = function (editor, enabledState) { + editor.addButton('visualblocks', { + active: false, + title: 'Show blocks', + cmd: 'mceVisualBlocks', + onPostRender: toggleActiveState(editor, enabledState) + }); + editor.addMenuItem('visualblocks', { + text: 'Show blocks', + cmd: 'mceVisualBlocks', + onPostRender: toggleActiveState(editor, enabledState), + selectable: true, + context: 'view', + prependToContext: true + }); + }; + var Buttons = { register: register$1 }; + + global.add('visualblocks', function (editor, pluginUrl) { + var enabledState = Cell(false); + Commands.register(editor, pluginUrl, enabledState); + Buttons.register(editor, enabledState); + Bindings.setup(editor, pluginUrl, enabledState); + }); + function Plugin () { + } + + return Plugin; + +}()); +})(); diff --git a/wp-content/plugins/tinymce-advanced/mce/visualblocks/plugin.min.js b/wp-content/plugins/tinymce-advanced/mce/visualblocks/plugin.min.js new file mode 100644 index 0000000..09bfaf2 --- /dev/null +++ b/wp-content/plugins/tinymce-advanced/mce/visualblocks/plugin.min.js @@ -0,0 +1 @@ +!function(){"use strict";var o=function(e){var t=e,n=function(){return t};return{get:n,set:function(e){t=e},clone:function(){return o(n())}}},e=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=function(e,t){e.fire("VisualBlocks",{state:t})},s=function(e){return e.getParam("visualblocks_default_state",!1)},c=function(e){return e.settings.visualblocks_content_css},l=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),u=tinymce.util.Tools.resolve("tinymce.util.Tools"),a=l.DOM.uniqueId(),r=function(e,t){var n=u.toArray(e.getElementsByTagName("link"));if(0===u.grep(n,function(e){return e.id===a}).length){var o=l.DOM.create("link",{id:a,rel:"stylesheet",href:t});e.getElementsByTagName("head")[0].appendChild(o)}},m=function(e,t,n){var o=e.dom,s=c(e);r(e.getDoc(),s||t+"/css/visualblocks.css"),o.toggleClass(e.getBody(),"mce-visualblocks"),n.set(!n.get()),i(e,n.get())},f=function(e,t,n){e.addCommand("mceVisualBlocks",function(){m(e,t,n)})},d=function(t,e,n){t.on("PreviewFormats AfterPreviewFormats",function(e){n.get()&&t.dom.toggleClass(t.getBody(),"mce-visualblocks","afterpreviewformats"===e.type)}),t.on("init",function(){s(t)&&m(t,e,n)}),t.on("remove",function(){t.dom.removeClass(t.getBody(),"mce-visualblocks")})},n=function(n,o){return function(e){var t=e.control;t.active(o.get()),n.on("VisualBlocks",function(e){t.active(e.state)})}},v=function(e,t){e.addButton("visualblocks",{active:!1,title:"Show blocks",cmd:"mceVisualBlocks",onPostRender:n(e,t)}),e.addMenuItem("visualblocks",{text:"Show blocks",cmd:"mceVisualBlocks",onPostRender:n(e,t),selectable:!0,context:"view",prependToContext:!0})};e.add("visualblocks",function(e,t){var n=o(!1);f(e,t,n),v(e,n),d(e,t,n)})}(); \ No newline at end of file diff --git a/wp-content/plugins/tinymce-advanced/mce/visualchars/plugin.js b/wp-content/plugins/tinymce-advanced/mce/visualchars/plugin.js new file mode 100644 index 0000000..3609e23 --- /dev/null +++ b/wp-content/plugins/tinymce-advanced/mce/visualchars/plugin.js @@ -0,0 +1,457 @@ +(function () { +var visualchars = (function (domGlobals) { + 'use strict'; + + var Cell = function (initial) { + var value = initial; + var get = function () { + return value; + }; + var set = function (v) { + value = v; + }; + var clone = function () { + return Cell(get()); + }; + return { + get: get, + set: set, + clone: clone + }; + }; + + var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); + + var get = function (toggleState) { + var isEnabled = function () { + return toggleState.get(); + }; + return { isEnabled: isEnabled }; + }; + var Api = { get: get }; + + var fireVisualChars = function (editor, state) { + return editor.fire('VisualChars', { state: state }); + }; + var Events = { fireVisualChars: fireVisualChars }; + + var noop = function () { + }; + var constant = function (value) { + return function () { + return value; + }; + }; + var never = constant(false); + var always = constant(true); + + var none = function () { + return NONE; + }; + var NONE = function () { + var eq = function (o) { + return o.isNone(); + }; + var call = function (thunk) { + return thunk(); + }; + var id = function (n) { + return n; + }; + var me = { + fold: function (n, s) { + return n(); + }, + is: never, + isSome: never, + isNone: always, + getOr: id, + getOrThunk: call, + getOrDie: function (msg) { + throw new Error(msg || 'error: getOrDie called on none.'); + }, + getOrNull: constant(null), + getOrUndefined: constant(undefined), + or: id, + orThunk: call, + map: none, + each: noop, + bind: none, + exists: never, + forall: always, + filter: none, + equals: eq, + equals_: eq, + toArray: function () { + return []; + }, + toString: constant('none()') + }; + if (Object.freeze) { + Object.freeze(me); + } + return me; + }(); + var some = function (a) { + var constant_a = constant(a); + var self = function () { + return me; + }; + var bind = function (f) { + return f(a); + }; + var me = { + fold: function (n, s) { + return s(a); + }, + is: function (v) { + return a === v; + }, + isSome: always, + isNone: never, + getOr: constant_a, + getOrThunk: constant_a, + getOrDie: constant_a, + getOrNull: constant_a, + getOrUndefined: constant_a, + or: self, + orThunk: self, + map: function (f) { + return some(f(a)); + }, + each: function (f) { + f(a); + }, + bind: bind, + exists: bind, + forall: bind, + filter: function (f) { + return f(a) ? me : NONE; + }, + toArray: function () { + return [a]; + }, + toString: function () { + return 'some(' + a + ')'; + }, + equals: function (o) { + return o.is(a); + }, + equals_: function (o, elementEq) { + return o.fold(never, function (b) { + return elementEq(a, b); + }); + } + }; + return me; + }; + var from = function (value) { + return value === null || value === undefined ? NONE : some(value); + }; + var Option = { + some: some, + none: none, + from: from + }; + + var typeOf = function (x) { + if (x === null) { + return 'null'; + } + var t = typeof x; + if (t === 'object' && (Array.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'Array')) { + return 'array'; + } + if (t === 'object' && (String.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'String')) { + return 'string'; + } + return t; + }; + var isType = function (type) { + return function (value) { + return typeOf(value) === type; + }; + }; + var isFunction = isType('function'); + + var nativeSlice = Array.prototype.slice; + var map = function (xs, f) { + var len = xs.length; + var r = new Array(len); + for (var i = 0; i < len; i++) { + var x = xs[i]; + r[i] = f(x, i); + } + return r; + }; + var each = function (xs, f) { + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + f(x, i); + } + }; + var from$1 = isFunction(Array.from) ? Array.from : function (x) { + return nativeSlice.call(x); + }; + + var fromHtml = function (html, scope) { + var doc = scope || domGlobals.document; + var div = doc.createElement('div'); + div.innerHTML = html; + if (!div.hasChildNodes() || div.childNodes.length > 1) { + domGlobals.console.error('HTML does not have a single root node', html); + throw new Error('HTML must have a single root node'); + } + return fromDom(div.childNodes[0]); + }; + var fromTag = function (tag, scope) { + var doc = scope || domGlobals.document; + var node = doc.createElement(tag); + return fromDom(node); + }; + var fromText = function (text, scope) { + var doc = scope || domGlobals.document; + var node = doc.createTextNode(text); + return fromDom(node); + }; + var fromDom = function (node) { + if (node === null || node === undefined) { + throw new Error('Node cannot be null or undefined'); + } + return { dom: constant(node) }; + }; + var fromPoint = function (docElm, x, y) { + var doc = docElm.dom(); + return Option.from(doc.elementFromPoint(x, y)).map(fromDom); + }; + var Element = { + fromHtml: fromHtml, + fromTag: fromTag, + fromText: fromText, + fromDom: fromDom, + fromPoint: fromPoint + }; + + var ATTRIBUTE = domGlobals.Node.ATTRIBUTE_NODE; + var CDATA_SECTION = domGlobals.Node.CDATA_SECTION_NODE; + var COMMENT = domGlobals.Node.COMMENT_NODE; + var DOCUMENT = domGlobals.Node.DOCUMENT_NODE; + var DOCUMENT_TYPE = domGlobals.Node.DOCUMENT_TYPE_NODE; + var DOCUMENT_FRAGMENT = domGlobals.Node.DOCUMENT_FRAGMENT_NODE; + var ELEMENT = domGlobals.Node.ELEMENT_NODE; + var TEXT = domGlobals.Node.TEXT_NODE; + var PROCESSING_INSTRUCTION = domGlobals.Node.PROCESSING_INSTRUCTION_NODE; + var ENTITY_REFERENCE = domGlobals.Node.ENTITY_REFERENCE_NODE; + var ENTITY = domGlobals.Node.ENTITY_NODE; + var NOTATION = domGlobals.Node.NOTATION_NODE; + + var Global = typeof domGlobals.window !== 'undefined' ? domGlobals.window : Function('return this;')(); + + var type = function (element) { + return element.dom().nodeType; + }; + var value = function (element) { + return element.dom().nodeValue; + }; + var isType$1 = function (t) { + return function (element) { + return type(element) === t; + }; + }; + var isText = isType$1(TEXT); + + var charMap = { + '\xA0': 'nbsp', + '\xAD': 'shy' + }; + var charMapToRegExp = function (charMap, global) { + var key, regExp = ''; + for (key in charMap) { + regExp += key; + } + return new RegExp('[' + regExp + ']', global ? 'g' : ''); + }; + var charMapToSelector = function (charMap) { + var key, selector = ''; + for (key in charMap) { + if (selector) { + selector += ','; + } + selector += 'span.mce-' + charMap[key]; + } + return selector; + }; + var Data = { + charMap: charMap, + regExp: charMapToRegExp(charMap), + regExpGlobal: charMapToRegExp(charMap, true), + selector: charMapToSelector(charMap), + charMapToRegExp: charMapToRegExp, + charMapToSelector: charMapToSelector + }; + + var wrapCharWithSpan = function (value) { + return '' + value + ''; + }; + var Html = { wrapCharWithSpan: wrapCharWithSpan }; + + var isMatch = function (n) { + var value$1 = value(n); + return isText(n) && value$1 !== undefined && Data.regExp.test(value$1); + }; + var filterDescendants = function (scope, predicate) { + var result = []; + var dom = scope.dom(); + var children = map(dom.childNodes, Element.fromDom); + each(children, function (x) { + if (predicate(x)) { + result = result.concat([x]); + } + result = result.concat(filterDescendants(x, predicate)); + }); + return result; + }; + var findParentElm = function (elm, rootElm) { + while (elm.parentNode) { + if (elm.parentNode === rootElm) { + return elm; + } + elm = elm.parentNode; + } + }; + var replaceWithSpans = function (text) { + return text.replace(Data.regExpGlobal, Html.wrapCharWithSpan); + }; + var Nodes = { + isMatch: isMatch, + filterDescendants: filterDescendants, + findParentElm: findParentElm, + replaceWithSpans: replaceWithSpans + }; + + var show = function (editor, rootElm) { + var node, div; + var nodeList = Nodes.filterDescendants(Element.fromDom(rootElm), Nodes.isMatch); + each(nodeList, function (n) { + var withSpans = Nodes.replaceWithSpans(editor.dom.encode(value(n))); + div = editor.dom.create('div', null, withSpans); + while (node = div.lastChild) { + editor.dom.insertAfter(node, n.dom()); + } + editor.dom.remove(n.dom()); + }); + }; + var hide = function (editor, body) { + var nodeList = editor.dom.select(Data.selector, body); + each(nodeList, function (node) { + editor.dom.remove(node, 1); + }); + }; + var toggle = function (editor) { + var body = editor.getBody(); + var bookmark = editor.selection.getBookmark(); + var parentNode = Nodes.findParentElm(editor.selection.getNode(), body); + parentNode = parentNode !== undefined ? parentNode : body; + hide(editor, parentNode); + show(editor, parentNode); + editor.selection.moveToBookmark(bookmark); + }; + var VisualChars = { + show: show, + hide: hide, + toggle: toggle + }; + + var toggleVisualChars = function (editor, toggleState) { + var body = editor.getBody(); + var selection = editor.selection; + var bookmark; + toggleState.set(!toggleState.get()); + Events.fireVisualChars(editor, toggleState.get()); + bookmark = selection.getBookmark(); + if (toggleState.get() === true) { + VisualChars.show(editor, body); + } else { + VisualChars.hide(editor, body); + } + selection.moveToBookmark(bookmark); + }; + var Actions = { toggleVisualChars: toggleVisualChars }; + + var register = function (editor, toggleState) { + editor.addCommand('mceVisualChars', function () { + Actions.toggleVisualChars(editor, toggleState); + }); + }; + var Commands = { register: register }; + + var global$1 = tinymce.util.Tools.resolve('tinymce.util.Delay'); + + var setup = function (editor, toggleState) { + var debouncedToggle = global$1.debounce(function () { + VisualChars.toggle(editor); + }, 300); + if (editor.settings.forced_root_block !== false) { + editor.on('keydown', function (e) { + if (toggleState.get() === true) { + e.keyCode === 13 ? VisualChars.toggle(editor) : debouncedToggle(); + } + }); + } + }; + var Keyboard = { setup: setup }; + + var isEnabledByDefault = function (editor) { + return editor.getParam('visualchars_default_state', false); + }; + var Settings = { isEnabledByDefault: isEnabledByDefault }; + + var setup$1 = function (editor, toggleState) { + editor.on('init', function () { + var valueForToggling = !Settings.isEnabledByDefault(editor); + toggleState.set(valueForToggling); + Actions.toggleVisualChars(editor, toggleState); + }); + }; + var Bindings = { setup: setup$1 }; + + var toggleActiveState = function (editor) { + return function (e) { + var ctrl = e.control; + editor.on('VisualChars', function (e) { + ctrl.active(e.state); + }); + }; + }; + var register$1 = function (editor) { + editor.addButton('visualchars', { + active: false, + title: 'Show invisible characters', + cmd: 'mceVisualChars', + onPostRender: toggleActiveState(editor) + }); + editor.addMenuItem('visualchars', { + text: 'Show invisible characters', + cmd: 'mceVisualChars', + onPostRender: toggleActiveState(editor), + selectable: true, + context: 'view', + prependToContext: true + }); + }; + + global.add('visualchars', function (editor) { + var toggleState = Cell(false); + Commands.register(editor, toggleState); + register$1(editor); + Keyboard.setup(editor, toggleState); + Bindings.setup(editor, toggleState); + return Api.get(toggleState); + }); + function Plugin () { + } + + return Plugin; + +}(window)); +})(); diff --git a/wp-content/plugins/tinymce-advanced/mce/visualchars/plugin.min.js b/wp-content/plugins/tinymce-advanced/mce/visualchars/plugin.min.js new file mode 100644 index 0000000..0a19345 --- /dev/null +++ b/wp-content/plugins/tinymce-advanced/mce/visualchars/plugin.min.js @@ -0,0 +1 @@ +!function(r){"use strict";var n,e,t,o,i,u,c=function(n){var e=n,t=function(){return e};return{get:t,set:function(n){e=n},clone:function(){return c(t())}}},a=tinymce.util.Tools.resolve("tinymce.PluginManager"),f=function(n){return{isEnabled:function(){return n.get()}}},d=function(n,e){return n.fire("VisualChars",{state:e})},s=function(){},l=function(n){return function(){return n}},m=l(!1),N=l(!0),g=function(){return E},E=(n=function(n){return n.isNone()},o={fold:function(n,e){return n()},is:m,isSome:m,isNone:N,getOr:t=function(n){return n},getOrThunk:e=function(n){return n()},getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:l(null),getOrUndefined:l(undefined),or:t,orThunk:e,map:g,each:s,bind:g,exists:m,forall:N,filter:g,equals:n,equals_:n,toArray:function(){return[]},toString:l("none()")},Object.freeze&&Object.freeze(o),o),h=function(t){var n=l(t),e=function(){return o},r=function(n){return n(t)},o={fold:function(n,e){return e(t)},is:function(n){return t===n},isSome:N,isNone:m,getOr:n,getOrThunk:n,getOrDie:n,getOrNull:n,getOrUndefined:n,or:e,orThunk:e,map:function(n){return h(n(t))},each:function(n){n(t)},bind:r,exists:r,forall:r,filter:function(n){return n(t)?o:E},toArray:function(){return[t]},toString:function(){return"some("+t+")"},equals:function(n){return n.is(t)},equals_:function(n,e){return n.fold(m,function(n){return e(t,n)})}};return o},v=function(n){return null===n||n===undefined?E:h(n)},T=(i="function",function(n){return function(n){if(null===n)return"null";var e=typeof n;return"object"===e&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"===e&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":e}(n)===i}),p=(Array.prototype.slice,function(n,e){for(var t=0,r=n.length;t'+n+""},A=function(n,e){var t=[],r=function(n,e){for(var t=n.length,r=new Array(t),o=0;o]*)?>', 'gi' ), '\n$&' ); + html = html.replace( new RegExp( '', 'gi' ), '$&\n' ); + html = html.replace( /(]*)?>)[\r\n\t]*/gi, '$1\n' ); + html = html.replace( />\n[\r\n\t]+\n<' ); + html = html.replace( /^
  • \u00a0<\/td>/g, ' ' ); + + return tinymce.trim( html ); + } + + editor.addCommand( 'Tadv_Mark', function() { + editor.formatter.toggle('mark'); + }); + + editor.addButton( 'tadv_mark', { + icon: 'backcolor', + tooltip: 'Mark', + cmd: 'Tadv_Mark', + stateSelector: 'mark' + }); + + editor.on( 'init', function() { + if ( noAutop ) { + editor.on( 'SaveContent', function( event ) { + event.content = event.content.replace( /caption\](\s|]*>|

     <\/p>)*\[caption/g, 'caption] [caption' ); + + event.content = event.content.replace( /<(object|audio|video)[\s\S]+?<\/\1>/g, function( match ) { + return match.replace( /[\r\n\t ]+/g, ' ' ); + }); + + event.content = event.content.replace( /]*)?>[\s\S]+?<\/pre>/g, function( match ) { + match = match.replace( /
    (\r\n|\n)?/g, '\n' ); + return match.replace( /<\/?p( [^>]*)?>(\r\n|\n)?/g, '\n' ); + }); + + event.content = addLineBreaks( event.content ); + }); + } + + try { + if ( editor.plugins.searchreplace && ! editor.controlManager.buttons.searchreplace ) { + editor.shortcuts.remove( 'meta+f' ); + } + } catch ( er ) {} + + editor.formatter.register({ + mark: { inline: 'mark' } + }); + }); + + editor.on( 'ObjectResizeStart', function( event ) { + var element = event.target; + var table = editor.$( element ); + var parentWidth; + var tableWidth; + var width; + + if ( table.is( 'table' ) ) { + if ( element.style.width && element.style.width.indexOf( '%' ) !== -1 ) { + return; + } + + parentWidth = parseInt( table.parent().css( 'width' ), 10 ); + tableWidth = parseInt( event.width, 10 ); + + if ( parentWidth && tableWidth ) { + if ( Math.abs( parentWidth - tableWidth ) < 3 ) { + table.css({ width: '100%' }); + } else { + width = Math.round( ( tableWidth / parentWidth ) * 100 ); + + if ( width > 10 && width < 200 ) { + table.css({ width: width + '%' }); + } + } + } + } + }, true ); + + editor.addMenuItem( 'tmaresettablesize', { + text: 'Reset table size', + cmd: 'tmaResetTableSize', + icon: 'dashicon dashicons-image-flip-horizontal', + context: 'format', + }); + + editor.addMenuItem( 'tmaremovetablestyles', { + text: 'Remove table styling', + cmd: 'tmaRemoveTableStyles', + icon: 'dashicon dashicons-editor-table', + context: 'format', + }); + + editor.addButton( 'tmaresettablesize', { + title: 'Reset table size', + cmd: 'tmaResetTableSize', + icon: 'dashicon dashicons-image-flip-horizontal', + } ); + + editor.addButton( 'tmaremovetablestyles', { + title: 'Remove table styling', + cmd: 'tmaRemoveTableStyles', + icon: 'dashicon dashicons-editor-table', + } ); + + editor.addCommand( 'tmaRemoveTableStyles', function() { + var node = editor.selection.getStart(); + var table = editor.dom.getParents( node, 'table' ); + var attr = { + style: null, + 'data-mce-style': null, + width: null, + height: null, + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + align: null, + valign: null, + axis: null, + 'char': null, + charoff: null, + bgcolor: null, + border: null, + cellspacing: null, + cellpadding: null + }; + + if ( table ) { + editor.$( table ).attr( attr ).find( 'tr, th, td, thead, tbody, tfoot' ).each( function( i, element ) { + editor.$( element ).attr( attr ); + } ); + } + } ); + + editor.addCommand( 'tmaResetTableSize', function() { + var node = editor.selection.getStart(); + var table = editor.dom.getParents( node, 'table' ); + + if ( table ) { + removeInlineSizes( null, table ); + + editor.$( table ).find( 'tr, th, td, thead, tbody, tfoot' ).each( removeInlineSizes ); + } + } ); + + function removeInlineSizes( i, node ) { + var element = editor.$( node ); + + element.attr( { + width: null, + height: null, + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null + } ); + + element.css({ width: null, height: null }); + + if ( element.is( 'table' ) ) { + element.css({ 'border-collapse': 'collapse', width: '100%;' }); + } + + if ( ! element.attr( 'style' ) ) { + element.attr({ style: null, 'data-mce-style': null }); + } else { + element.attr( 'data-mce-style', element.attr( 'style' ) ); + } + } + + if ( noAutop ) { + editor.on( 'beforeSetContent', function( event ) { + var autop; + var wp = window.wp; + + if ( ! wp ) { + return; + } + + autop = wp.editor && wp.editor.autop; + + if ( ! autop ) { + autop = wp.oldEditor && wp.oldEditor.autop; + } + + if ( event.load && autop && event.content && event.content.indexOf( '\n' ) > -1 && ! /

    /i.test( event.content ) ) { + event.content = autop( event.content ); + } + }, true ); + + if ( editor.settings.classic_block_editor ) { + editor.on( 'beforeGetContent', function( event ) { + if ( event.format === 'raw' ) { + return; + } + + var blocks = tinymce.$( '.block-editor-block-list__block' ); + + if ( blocks.length === 1 && blocks.attr( 'data-type' ) === 'core/freeform' ) { + // Mark all paragraph tags inside a single freeform block so they are not stripped by the block editor... + editor.$( 'p' ).each( function ( i, node ) { + if ( ! node.hasAttributes() ) { + editor.$( node ).attr( 'data-tadv-p', 'keep' ); + } + } ); + } else { + // Remove the above ugliness... + editor.$( 'p[data-tadv-p]' ).removeAttr( 'data-tadv-p' ); + } + }, true ); + } + } + + return { + addLineBreaks: addLineBreaks + }; + }); +}( window.tinymce )); diff --git a/wp-content/plugins/tinymce-advanced/mce/wptadv/plugin.min.js b/wp-content/plugins/tinymce-advanced/mce/wptadv/plugin.min.js new file mode 100644 index 0000000..46c876b --- /dev/null +++ b/wp-content/plugins/tinymce-advanced/mce/wptadv/plugin.min.js @@ -0,0 +1,233 @@ +/** + * Additional functionality for TinyMCE. + * @package advanced-editor-tools + */ + +( function( tinymce ) { + tinymce.PluginManager.add( 'wptadv', function( editor ) { + var noAutop = ( ! editor.settings.wpautop && editor.settings.tadv_noautop ); + + function addLineBreaks( html ) { + var blocklist = 'table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre' + + '|form|map|area|blockquote|address|math|style|p|h[1-6]|hr|fieldset|legend|section' + + '|article|aside|hgroup|header|footer|nav|figure|figcaption|details|menu|summary'; + + html = html.replace( new RegExp( '<(?:' + blocklist + ')(?: [^>]*)?>', 'gi' ), '\n$&' ); + html = html.replace( new RegExp( '', 'gi' ), '$&\n' ); + html = html.replace( /(]*)?>)[\r\n\t]*/gi, '$1\n' ); + html = html.replace( />\n[\r\n\t]+\n<' ); + html = html.replace( /^

  • \u00a0<\/td>/g, ' ' ); + + return tinymce.trim( html ); + } + + editor.addCommand( 'Tadv_Mark', function() { + editor.formatter.toggle('mark'); + }); + + editor.addButton( 'tadv_mark', { + icon: 'backcolor', + tooltip: 'Mark', + cmd: 'Tadv_Mark', + stateSelector: 'mark' + }); + + editor.on( 'init', function() { + if ( noAutop ) { + editor.on( 'SaveContent', function( event ) { + event.content = event.content.replace( /caption\](\s|]*>|

     <\/p>)*\[caption/g, 'caption] [caption' ); + + event.content = event.content.replace( /<(object|audio|video)[\s\S]+?<\/\1>/g, function( match ) { + return match.replace( /[\r\n\t ]+/g, ' ' ); + }); + + event.content = event.content.replace( /]*)?>[\s\S]+?<\/pre>/g, function( match ) { + match = match.replace( /
    (\r\n|\n)?/g, '\n' ); + return match.replace( /<\/?p( [^>]*)?>(\r\n|\n)?/g, '\n' ); + }); + + event.content = addLineBreaks( event.content ); + }); + } + + try { + if ( editor.plugins.searchreplace && ! editor.controlManager.buttons.searchreplace ) { + editor.shortcuts.remove( 'meta+f' ); + } + } catch ( er ) {} + + editor.formatter.register({ + mark: { inline: 'mark' } + }); + }); + + editor.on( 'ObjectResizeStart', function( event ) { + var element = event.target; + var table = editor.$( element ); + var parentWidth; + var tableWidth; + var width; + + if ( table.is( 'table' ) ) { + if ( element.style.width && element.style.width.indexOf( '%' ) !== -1 ) { + return; + } + + parentWidth = parseInt( table.parent().css( 'width' ), 10 ); + tableWidth = parseInt( event.width, 10 ); + + if ( parentWidth && tableWidth ) { + if ( Math.abs( parentWidth - tableWidth ) < 3 ) { + table.css({ width: '100%' }); + } else { + width = Math.round( ( tableWidth / parentWidth ) * 100 ); + + if ( width > 10 && width < 200 ) { + table.css({ width: width + '%' }); + } + } + } + } + }, true ); + + editor.addMenuItem( 'tmaresettablesize', { + text: 'Reset table size', + cmd: 'tmaResetTableSize', + icon: 'dashicon dashicons-image-flip-horizontal', + context: 'format', + }); + + editor.addMenuItem( 'tmaremovetablestyles', { + text: 'Remove table styling', + cmd: 'tmaRemoveTableStyles', + icon: 'dashicon dashicons-editor-table', + context: 'format', + }); + + editor.addButton( 'tmaresettablesize', { + title: 'Reset table size', + cmd: 'tmaResetTableSize', + icon: 'dashicon dashicons-image-flip-horizontal', + } ); + + editor.addButton( 'tmaremovetablestyles', { + title: 'Remove table styling', + cmd: 'tmaRemoveTableStyles', + icon: 'dashicon dashicons-editor-table', + } ); + + editor.addCommand( 'tmaRemoveTableStyles', function() { + var node = editor.selection.getStart(); + var table = editor.dom.getParents( node, 'table' ); + var attr = { + style: null, + 'data-mce-style': null, + width: null, + height: null, + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + align: null, + valign: null, + axis: null, + 'char': null, + charoff: null, + bgcolor: null, + border: null, + cellspacing: null, + cellpadding: null + }; + + if ( table ) { + editor.$( table ).attr( attr ).find( 'tr, th, td, thead, tbody, tfoot' ).each( function( i, element ) { + editor.$( element ).attr( attr ); + } ); + } + } ); + + editor.addCommand( 'tmaResetTableSize', function() { + var node = editor.selection.getStart(); + var table = editor.dom.getParents( node, 'table' ); + + if ( table ) { + removeInlineSizes( null, table ); + + editor.$( table ).find( 'tr, th, td, thead, tbody, tfoot' ).each( removeInlineSizes ); + } + } ); + + function removeInlineSizes( i, node ) { + var element = editor.$( node ); + + element.attr( { + width: null, + height: null, + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null + } ); + + element.css({ width: null, height: null }); + + if ( element.is( 'table' ) ) { + element.css({ 'border-collapse': 'collapse', width: '100%;' }); + } + + if ( ! element.attr( 'style' ) ) { + element.attr({ style: null, 'data-mce-style': null }); + } else { + element.attr( 'data-mce-style', element.attr( 'style' ) ); + } + } + + if ( noAutop ) { + editor.on( 'beforeSetContent', function( event ) { + var autop; + var wp = window.wp; + + if ( ! wp ) { + return; + } + + autop = wp.editor && wp.editor.autop; + + if ( ! autop ) { + autop = wp.oldEditor && wp.oldEditor.autop; + } + + if ( event.load && autop && event.content && event.content.indexOf( '\n' ) > -1 && ! /

    /i.test( event.content ) ) { + event.content = autop( event.content ); + } + }, true ); + + if ( editor.settings.classic_block_editor ) { + editor.on( 'beforeGetContent', function( event ) { + if ( event.format === 'raw' ) { + return; + } + + var blocks = tinymce.$( '.block-editor-block-list__block' ); + + if ( blocks.length === 1 && blocks.attr( 'data-type' ) === 'core/freeform' ) { + // Mark all paragraph tags inside a single freeform block so they are not stripped by the block editor... + editor.$( 'p' ).each( function ( i, node ) { + if ( ! node.hasAttributes() ) { + editor.$( node ).attr( 'data-tadv-p', 'keep' ); + } + } ); + } else { + // Remove the above ugliness... + editor.$( 'p[data-tadv-p]' ).removeAttr( 'data-tadv-p' ); + } + }, true ); + } + } + + return { + addLineBreaks: addLineBreaks + }; + }); +}( window.tinymce )); diff --git a/wp-content/plugins/tinymce-advanced/plugin-assets/images/toolbar-actions-rtl.png b/wp-content/plugins/tinymce-advanced/plugin-assets/images/toolbar-actions-rtl.png new file mode 100644 index 0000000..5ad98da Binary files /dev/null and b/wp-content/plugins/tinymce-advanced/plugin-assets/images/toolbar-actions-rtl.png differ diff --git a/wp-content/plugins/tinymce-advanced/plugin-assets/images/toolbar-actions.png b/wp-content/plugins/tinymce-advanced/plugin-assets/images/toolbar-actions.png new file mode 100644 index 0000000..35fe7ef Binary files /dev/null and b/wp-content/plugins/tinymce-advanced/plugin-assets/images/toolbar-actions.png differ diff --git a/wp-content/plugins/tinymce-advanced/plugin-assets/tadv.css b/wp-content/plugins/tinymce-advanced/plugin-assets/tadv.css new file mode 100644 index 0000000..0f71598 --- /dev/null +++ b/wp-content/plugins/tinymce-advanced/plugin-assets/tadv.css @@ -0,0 +1,1005 @@ +/** + * Styles for the settings screen. + * @package advanced-editor-tools + */ + +body.settings_page_tinymce-advanced { + background: #ededed; + color: #000; +} + +.advanced-editor-tools h4 { + font-size: 1.1em; +} + +.settings-toggle { + display: inline-block; + padding: 12px 16px 12px 6px; + margin: 0 6px -1px 0; + border: 1px solid #ccc; + border-top-left-radius: 5px; + border-top-right-radius: 5px; + cursor: pointer; +} + +.rtl .settings-toggle { + padding: 12px 6px 12px 16px; + margin: 0 0 -1px 6px; +} + +.settings-toggle:focus { + outline: none; +} + +#classic-editor, +#block-editor { + padding: 0 18px 18px; + border: 1px solid #ccc; +} + +.classic-active .settings-toggle.classic, +.block-active .settings-toggle.block { + border-bottom-color: #f8f9f9; + background-color: #f8f9f9; +} + +.classic-active #block-editor, +.classic-active .block .arrow-open, +.classic-active .classic .dashicons-arrow-down, +.block-active #classic-editor, +.block-active .classic .arrow-open, +.block-active .block .dashicons-arrow-down { + display: none; +} + +.wrap.advanced-editor-tools { + max-width: 760px; + margin: 16px 24px 0 16px; +} + +.rtl .wrap.advanced-editor-tools { + margin: 16px 16px 0 24px; +} + +#classic-editor, +#block-editor { + margin-bottom: 45px; + background-color: #f8f9f9; +} + +.toolbar-block-wrap { + display: inline-block; +} + +/* Block editor buttons */ +#toolbar_block { + display: inline-block; + vertical-align: text-top; +} + +.toolbar-wrap { + margin: 8px 0; +} + +.toolbar-wrap.highlighted ul, +.toolbar-block-wrap.highlighted, +.tma-block-dropdown-toolbar-inner-wrap.highlighted { + background-color: #e4f2fd; +} + +.toolbar-block-wrap { + margin: 0; +} + +#toolbar_block { + border: 0; +} + +.tma-down-addow-wrap { + padding: 16px 13px 0; + display: inline-block; + box-sizing: border-box; + vertical-align: text-top; +} + +span.tma-down-addow::after { + content: ""; + pointer-events: none; + display: block; + width: 0; + height: 0; + border-left: 3px solid transparent; + border-right: 3px solid transparent; + border-top: 5px solid #444; +} + +.tma-block-dropdown-toolbar-wrap { + position: relative; + margin: 3px 0 0 36px; + height: auto; + width: 260px; + box-shadow: 0 3px 30px rgba(25, 30, 35, 0.16); + border: 1px solid #e2e4e7; + background: #fff; +} + +.rtl .tma-block-dropdown-toolbar-wrap { + margin: 3px 72px 0 0; +} + + +/* Drop-down arrow */ +.tma-block-dropdown-toolbar-arrow::before { + top: -8px; + border: 8px solid #e2e4e7; +} + +.tma-block-dropdown-toolbar-arrow::after { + top: -6px; + border: 8px solid #fff; +} + +.tma-block-dropdown-toolbar-arrow::before, +.tma-block-dropdown-toolbar-arrow::after { + content: ""; + position: absolute; + height: 0; + width: 0; + line-height: 0; + + border-bottom-style: solid; + border-left-color: transparent; + border-right-color: transparent; + border-top: none; + margin-left: -10px; + + left: 235px; +} + +.rtl .tma-block-dropdown-toolbar-arrow::before, +.rtl .tma-block-dropdown-toolbar-arrow::after { + left: auto; + right: 226px; +} + +.tma-block-dropdown-toolbar-inner-wrap { + height: 100%; + width: 100%; +} + +ul.toolbar-block-dropdown { + padding: 7px 0; + margin: 0; + height: 100%; + width: 100%; + min-height: 36px; +} + +ul.toolbar-block-dropdown > li { + display: block; + margin: 0 0 4px; + width: auto; + height: 40px; + cursor: move; + outline: none; +} + +ul.toolbar-block-dropdown > li:hover { + color: #191e23; + border: none; + box-shadow: none; + background: #f3f4f5; +} + +ul.toolbar-block-dropdown .tma-components-icon-button { + width: 100%; +} + +ul.toolbar-block-dropdown span { + vertical-align: middle; +} + +.block-button-name { + display: inline-block; + vertical-align: middle; +} + +.tma-components-toolbar *, +.tma-block-dropdown-toolbar-wrap * { + box-sizing: border-box; +} + +.tma-components-toolbar { + border: 1px solid #e2e4e7; + margin: 0; + background-color: #fff; + line-height: 1px; + min-height: 36px; + font-size: 0pt; +} + +.tma-components-toolbar > li { + display: inline-block; + margin: 0; + width: 36px; + height: 36px; + cursor: move; +} + +.tma-components-toolbar .block-button-name { + display: none; +} + +.tma-components-icon-button { + display: inline-block; + vertical-align: middle; + margin: 0; + padding: 3px; + outline: none; + width: 36px; + height: 36px; + border: none; + background: none; + color: #555d66; + overflow: hidden; + border-radius: 4px; + -webkit-appearance: none; +} + +.tma-components-icon-button .dashicons, +.tma-components-icon-button .mce-ico { + display: inline-block; + padding: 5px; + border-radius: 4px; + height: 30px; + width: 30px; + outline: none; + overflow: hidden; +} + +.tma-components-icon-button .mce-ico:before { + font-size: 20px; + margin: 2px; + display: block; +} + +.tma-components-icon-button:hover > span { + color: #555d66; + box-shadow: inset 0 0 0 1px #555d66, inset 0 0 0 2px #fff; +} + +.toolbar-block-dropdown .tma-components-icon-button:hover > span { + box-shadow: none; +} + +.toolbar-side-wrap, +.panel-block-colors { + width: 260px; + border: 1px solid #ddd; + background-color: #fff; +} + +.panel-title { + padding: 15px; + font-weight: 600; + background-color: #f8f9f9; + margin-bottom: 5px; +} + +.panel-title span { + color: #191e23; + float: right; +} + +.rtl .panel-title span { + float: left; +} + +.toolbar-unused-wrap { + width: 350px; +} + +.block-toolbar-unused { + min-height: 72px; +} + +.toolbar-block-title { + margin: 1.2em 0 0.6em; +} + +.block-toolbar-side { + border-color: transparent; + margin: 0 12px 10px; + min-height: 37px; +} + +.highlighted .block-toolbar-side { + border-color: #e2e4e7; +} + +.panel-block-colors-wrap { + margin-top: 40px; +} + +.panel-block-colors { + float: left; +} + +.rtl .panel-block-colors { + float: right; +} + +.panel-block-colors-settings { + margin-left: 280px; + width: auto; + clear: none; +} + +.rtl .panel-block-colors-settings { + margin-left: 0; + margin-right: 280px; +} + +.panel-block-colors-settings__text { + border-top: 40px solid transparent; +} + +.panel-block-colors-settings__background { + border-top: 60px solid transparent; +} + +.panel-block-text-color p, +.panel-block-background-color p { + margin: 10px 16px 5px; + color: #555d66; +} + +.panel-block-text-color.disabled, +.panel-block-background-color.disabled { + opacity: 0.3; +} +/* Block editor buttons end */ + +.classic-blocks-title-h4 { + margin: 40px 0 1.1em; +} +/* +.tadv-submit-top { + margin: 0 -36px; +} +*/ +form#tadvadmin { + margin-top: 24px; +} + +.tadv-more-plugins label { + font-weight: bold; + padding: 0 10px; +} + +.advanced-options label { + font-weight: 600; +} + +.advanced-editor-tools label { + vertical-align: baseline; +} + +.advanced-editor-tools input[type="checkbox"] { + vertical-align: text-bottom; +} + +.advanced-options { + margin: 40px 0; +} + +.advanced-options div { + margin: 1.2em 0; +} + +.advanced-options p { + margin-left: 22px; + margin-top: 5px; +} + +.advanced-options .tadv-help { + margin: 1em 0; +} + +.advanced-options h3 { + margin-top: 15px; +} + +.tadv-more-plugins { + margin-bottom: 30px; +} + +.tadv-submit .button-large { + float: right; +} + +.rtl .tadv-submit .button-large { + float: left; +} + +#tadv-import-error { + height: 22px; +} + +.import-file { + margin: 2em 0; +} + +#tadv-confirm-uninstall { + display: none; + background: #FFFFE0; + border: 1px solid #E6DB55; + padding: 8px; +} + +#tadv-confirm-uninstall .button { + margin: 0 5px; +} + +.tadv-import-export { + max-width: 800px; + min-width: 320px; +} + +#tadv-import { + width: 100%; + height: 200px; + padding: 8px 12px; +} + +ul.container, +.unused { + position: relative; +} + +.tadvitem i.mce-ico { + width: 20px; + height: 20px; + line-height: 20px; + text-align: center; + vertical-align: middle; + margin: 0; + padding: 0; + color: #555; +} + +.tadvitem i.mce-ico.mce-i-ltr, +.tadvitem i.mce-ico.mce-i-tadv_mark { + font-family: tinymce; + font-size: 16px; + vertical-align: text-top; +} + +.tadvitem i.mce-ico.mce-i-ltr:before { + content: "\e02f"; +} + +.tadvitem i.mce-ico.mce-i-tadv_mark:before { + content: "\e01a"; +} + +.tadvitem i.mce-ico.mce-i-tadv_mark { + text-shadow: none; + background: #ddd; +} + +.tadvitem.mce-listbox i.mce-caret { + right: 6px; +} + +.rtl .tadvitem.mce-listbox i.mce-caret { + right: auto; + left: 6px; +} + +.tadv-mce-menu.mce-menubar { + margin-bottom: 0; + background: #fff; + border: 1px solid #ccc; + border-bottom: 0; + opacity: 0.4; + filter: alpha(opacity=40); +} + +.tadv-mce-menu.enabled { + opacity: 1; + filter: alpha(opacity=100); +} + +.tadv-mce-menu.mce-menubar .mce-menubtn:hover { + background: transparent; + border-color: transparent; +} + +/* Menubar fix... */ +.mce-menubar .mce-menubtn button span { + font-size: 13px; +} + +.tadv-mce-menu.mce-menubar .mce-menubtn:hover button span { + color: #000; +} + +.tadv-mce-menu .mce-btn .mce-caret { + margin-left: 1px; + margin-top: 6px; + border-top-color: #555; +} + +#tadvadmin .mce-menubar .mce-menubtn:hover .mce-caret { + border-top-color: #000; +} + +.tadv-mce-menu * { + cursor: default; +} + +.tadvzones, +.unused { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +#tadvadmin p.submit { + padding-right: 10px; +} + +#tadvadmin #save { + float: right; +} + +.tadvdropzone { + padding: 2px 4px; + margin: 0 0 10px; + background-color: #fff; + border: 1px solid #bbb; +} + +.unuseddiv .highlighted, +.tadvdropzone.highlighted { + background-color: #e4f2fd; + color: #000; + border-color: #aaa; +} + +.tadvdropzone .descr { + display: none; +} + +.tadvdropzone .mce-menubtn .descr { + padding: 0; + font-size: 13px; +} + +.tadvdropzone .tadvmodule .tadvitem { + border: 1px solid transparent; + display: block; + margin: 1px 2px; + padding: 2px 3px; + width: 20px; + height: 20px; + -webkit-border-radius: 2px; + border-radius: 2px; +} + +.tadvdropzone .tadvmodule .tadvitem.mce-widget { + width: auto; + height: 20px; + border-color: #ccc; + background-color: #fff; + cursor: move; +} + +.tadvdropzone.mce-toolbar .mce-btn .the-button { + padding: 2px 3px 0; +} + +.tadvdropzone .tadvmodule .tadvitem:hover { + border-color: #999; + background-image: none; +} + +.tadvdropzone ul { + height: 30px; + width: 100%; + margin: 0; + padding: 1px 0 0; + line-height: 1; +} + +.unuseddiv { + margin: 0 -5px; +} + +.unuseddiv > p { + margin: 16px 5px 6px; +} + +.unused li, +.tadvdropzone li { + margin: 0; + padding: 0; + border: none; + display: inline-block; + cursor: move; + vertical-align: top; +} + +.unused li { + margin: 4px; +} + +.unused { + margin: 0; + min-height: 36px; +} + +.unused .tadvmodule .tadvitem { + display: block; + height: 24px; + width: 140px; + border: 1px solid #bbb; + background-color: #fff; + margin: 2px 1px 1px; + padding: 5px 4px 0; + -webkit-border-radius: 2px; + border-radius: 2px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + background-image: none; + box-shadow: none; +} + +.unused .tadvmodule .descr { + display: inline; + font-size: 12px; + line-height: 20px; +} + +.unused .tadvmodule .the-button .descr { + padding: 0 4px; + font-size: 13px; +} + +.tadvdropzone #formatselect, +.tadvdropzone #styleselect, +.tadvdropzone #fontsizeselect, +.tadvdropzone #fontselect { + width: 115px; +} + +div.tadv-error { + color: #ff0000; + font-weight: bold; + height: 26px; + line-height: 26px; + display: none; +} + +.wp-adv-error #wp-adv-error-message { + visibility: visible; +} + +.wp-adv-error #wp_adv .tadvitem { + border-color: red; +} + +.tadv-placeholder { + vertical-align: bottom; + display: inline-block; + position: static; + visibility: hidden; +} + +.tadvdropzone .tadv-placeholder { + height: 28px; +} + +.tadv-error { + color: #d54e21; +} + +.tadv-block-editor-toolbars-wrap { + max-width: 650px; +} + +.tadv-mce-menu.tadv-block-editor.mce-menubar { + background-image: url(images/toolbar-actions.png); + background-position: right; + background-repeat: no-repeat; + background-size: 84px 37px; +} + +.rtl .tadv-mce-menu.tadv-block-editor.mce-menubar { + background-image: url(images/toolbar-actions-rtl.png); + background-position: left; +} + +.tadv-block-editor .mce-menubtn { + margin: 7px 0 6px; +} + +.tadv-block-editor.tadvdropzone { + height: 60px; +} + +#toolbar_classic_block { + height: 60px; +} + +.tadv-popout-help { + padding: 1px 18px; + background-color: #fff; + margin: 8px 0; + border: 1px solid #e8e8e8; +} + +.tadv-popout-help ol { + padding: 0; + margin: 1em; +} + +.tadv-popout-help-close { + float: right; + margin: 1px -16px; +} + +.rtl .tadv-popout-help-close { + float: left; +} + +.tadv-popout-help-toggle, +.tadv-popout-help-close { + cursor: pointer; +} + +.tadv-mark .dashicons-editor-textcolor { + background-color: #fff9c0; + background-clip: content-box; +} + +.tadv-block-editor > div.mce-container-body { + margin-right: 80px; +} + +.rtl .tadv-block-editor > div.mce-container-body { + margin-right: 0; + margin-left: 80px; +} + +.rtl .the-button { + direction: rtl; + text-align: right; +} + +.tadv-block-placeholder { + background: #fff; + vertical-align: middle; +} + +/* Block toolbar */ +.tma-block-toolbar-wrap.editor-block-toolbar { + white-space: nowrap; + overflow-wrap: break-word; + box-sizing: border-box; + font-size: 16px; + line-height: 1.8; + color: #191e23; + + display: flex; + flex-grow: 1; + + width: auto; + overflow: inherit; + border-right: none; + border-left: 1px solid #b5bcc2; +} + +.tma-block-toolbar-wrap.editor-block-toolbar * { + box-sizing: inherit; +} + +.tma-block-toolbar-wrap div.components-toolbar { + border-top: 1px solid #b5bcc2; + border-bottom: 1px solid #b5bcc2; + border-right: 1px solid #b5bcc2; + + margin: 0; + background-color: #fff; + display: flex; + flex-shrink: 0; +} + +.tma-block-toolbar-wrap div.components-toolbar > div { + display: flex; +} + +.tma-block-toolbar-wrap .block-editor-block-switcher { + position: relative; + height: 36px; +} + +.tma-block-toolbar-wrap .components-button { + display: inline-flex; + text-decoration: none; + font-size: 13px; + margin: 0; + border: 0; + cursor: default; + -webkit-appearance: none; + background: none; + outline: none; +} + +.tma-block-toolbar-wrap .components-icon-button { + display: flex; + align-items: center; + padding: 8px; + margin: 0; + border: none; + background: none; + color: #555d66; + position: relative; + overflow: hidden; + border-radius: 4px; +} + +.tma-block-toolbar-wrap .components-toolbar__control.components-button { + display: inline-flex; + align-items: flex-end; + margin: 0; + padding: 3px; + outline: none; + position: relative; + width: 36px; + height: 36px; +} + +.tma-block-toolbar-wrap .components-dropdown-menu { + padding: 3px; +} + +.tma-block-toolbar-wrap div.components-toolbar > div + div { + margin-left: -3px; +} + +.rtl .tma-block-toolbar-wrap div.components-toolbar > div + div { + margin-left: 0; + margin-right: -3px; +} + +.tma-block-toolbar-wrap .components-dropdown-menu .components-dropdown-menu__toggle { + width: auto; + margin: 0; + padding: 4px; + border: 1px solid transparent; + display: flex; + flex-direction: row; + + /* Always hover... */ + color: #555d66; + box-shadow: inset 0 0 0 1px #555d66, inset 0 0 0 2px #fff; +} + +.tma-block-toolbar-wrap .components-dropdown-menu .components-dropdown-menu__toggle .components-dropdown-menu__indicator::after { + content: ""; + pointer-events: none; + display: block; + width: 0; + height: 0; + border-left: 3px solid transparent; + border-right: 3px solid transparent; + border-top: 5px solid currentColor; + margin: 7px; +} + +.components-dropdown-menu .components-dropdown-menu__toggle:hover, +.components-dropdown-menu .components-dropdown-menu__toggle:focus, +.components-dropdown-menu .components-dropdown-menu__toggle:not(:disabled):not([aria-disabled="true"]):not(.is-default):hover { + color: #555d66; + box-shadow: inset 0 0 0 1px #555d66, inset 0 0 0 2px #fff; +} + +.tma-block-toolbar-wrap .block-editor-block-icon { + display: flex; + align-items: center; + justify-content: center; + width: 24px; + height: 24px; + margin: 0; + border-radius: 4px; +} + +.tma-block-toolbar-wrap .block-editor-block-icon.has-colors svg { + fill: currentColor; +} + +.tma-block-toolbar-wrap .block-editor-block-icon svg { + width: 20px; + height: 20px; + max-width: 24px; + max-height: 24px; +} + +.tma-block-toolbar-wrap .components-icon-button svg { + fill: currentColor; + outline: none; +} + +.tma-block-toolbar-wrap .components-toolbar__control.components-button > svg, +.tma-block-toolbar-wrap .components-toolbar__control.components-button > .dashicons { + padding: 5px; + border-radius: 4px; + height: 30px; + width: 30px; +} + +.tma-block-toolbar-wrap .components-toolbar__control .dashicon { + display: block; +} + +.tma-block-toolbar-wrap .components-icon-button.block-editor-block-switcher__toggle .block-editor-block-icon::after { + content: ""; + pointer-events: none; + display: block; + width: 0; + height: 0; + border-left: 3px solid transparent; + border-right: 3px solid transparent; + border-top: 5px solid currentColor; + margin-left: 4px; + margin-right: 2px; +} + +.tma-block-toolbar-wrap .block-editor-block-settings-menu__toggle .dashicon { + transform: rotate(90deg); +} + +.tma-block-toolbar-wrap .components-icon-button.block-editor-block-switcher__toggle, +.tma-block-toolbar-wrap .components-icon-button.block-editor-block-switcher__no-switcher-icon { + width: auto; + margin: 0; + display: block; + height: 36px; + padding: 3px; +} + +.tma-block-toolbar-wrap .components-icon-button.block-editor-block-switcher__toggle .block-editor-block-icon, +.tma-block-toolbar-wrap .components-icon-button.block-editor-block-switcher__toggle .block-editor-block-switcher__transform { + width: 42px; + height: 30px; + position: relative; + margin: 0 auto; + padding: 3px; + display: flex; + align-items: center; +} + +.advanced-options .dashicons { + color: #777; +} + +.tadvmodule .the-button { + margin: 0; +} + +/* Fixes for inadequate css changes in 5.3 :( */ +#tadvadmin .button, +#tadvadmin .button-primary { + font-size: 14px; + line-height: 1.7; + padding: 2px 10px 3px; +} + +span.small-info { + font-weight: 400; + font-size: 13px; +} diff --git a/wp-content/plugins/tinymce-advanced/plugin-assets/tadv.js b/wp-content/plugins/tinymce-advanced/plugin-assets/tadv.js new file mode 100644 index 0000000..89531f2 --- /dev/null +++ b/wp-content/plugins/tinymce-advanced/plugin-assets/tadv.js @@ -0,0 +1,249 @@ +/** + * Scripts for the settings screen in wp-admin. + * @package advanced-editor-tools + */ + +jQuery( document ).ready( function( $ ) { + var $importElement = $('#tadv-import'); + var $importError = $('#tadv-import-error'); + + function sortClassic() { + var container = $('.container'); + + if ( container.sortable( 'instance' ) ) { + container.sortable( 'destroy' ); + } + + container.sortable({ + connectWith: '.container', + items: '> li', + cursor: 'move', + stop: function( event, ui ) { + var toolbar_id; + + if ( ui && ( toolbar_id = ui.item.parent().attr('id') ) ) { + ui.item.find('input.tadv-button').attr('name', toolbar_id + '[]'); + } + }, + activate: function( event, ui ) { + $(this).parent().addClass( 'highlighted' ); + }, + deactivate: function( event, ui ) { + $(this).parent().removeClass( 'highlighted' ); + }, + revert: 300, + opacity: 0.7, + placeholder: 'tadv-placeholder', + forcePlaceholderSize: true + }); + } + + function sortBlock() { + var classicBlock = $( '.container-classic-block' ); + var block = $( '.container-block' ); + var blockToolbar = $( '#toolbar_block' ); + + if ( classicBlock.sortable( 'instance' ) ) { + classicBlock.sortable( 'destroy' ); + } + + if ( block.sortable( 'instance' ) ) { + block.sortable( 'destroy' ); + } + + if ( blockToolbar.sortable( 'instance' ) ) { + blockToolbar.sortable( 'destroy' ); + } + + classicBlock.sortable({ + connectWith: '.container-classic-block', + items: '> li', + cursor: 'move', + stop: function( event, ui ) { + var toolbar_id = ui.item.parent().attr( 'id' ); + resetItemName( toolbar_id, ui.item ); + }, + activate: function( event, ui ) { + $(this).parent().addClass( 'highlighted' ); + }, + deactivate: function( event, ui ) { + $(this).parent().removeClass( 'highlighted' ); + }, + revert: 300, + opacity: 0.7, + placeholder: 'tadv-placeholder', + forcePlaceholderSize: true + }); + + blockToolbar.sortable({ + connectWith: '.container-block', + items: '> li', + cursor: 'move', + stop: function( event, ui ) { + var toolbar_id = ui.item.parent().attr( 'id' ); + + resetItemName( toolbar_id, ui.item ); + sortBlockToolbar(); + }, + activate: function( event, ui ) { + $(this).parent().addClass( 'highlighted' ); + }, + deactivate: function( event, ui ) { + $(this).parent().removeClass( 'highlighted' ); + }, + revert: 300, + opacity: 0.7, + placeholder: 'tadv-placeholder', + forcePlaceholderSize: true + }); + + block.sortable({ + connectWith: '.container-block, #toolbar_block', + items: '> li', + cursor: 'move', + stop: function( event, ui ) { + var toolbar_id = ui.item.parent().attr( 'id' ); + + resetItemName( toolbar_id, ui.item ); + sortBlockToolbar(); + }, + activate: function( event, ui ) { + $(this).parent().addClass( 'highlighted' ); + }, + deactivate: function( event, ui ) { + $(this).parent().removeClass( 'highlighted' ); + }, + receive: function( event, ui ) { + if ( + $( event.target ).is( '#toolbar_block_side' ) && + ( ui.item.is( 'li.core-image' ) || ui.item.is( 'li.core-text-color' ) ) + ) { + block.sortable( 'cancel' ); + } + }, + revert: 300, + opacity: 0.7, + placeholder: 'tadv-block-placeholder', + forcePlaceholderSize: true + }); + } + + function resetItemName( name, item ) { + if ( name ) { + item.find( 'input[type="hidden"]' ).attr( 'name', name + '[]' ); + } + } + + function sortBlockToolbar() { + var container = $( '#toolbar_block' ); + var items = container.find( 'li' ); + + items.sort( function ( a, b ) { + var aa = $( a ).find( 'div' ).attr( 'title' ); + var bb = $( b ).find( 'div' ).attr( 'title' ); + + return ( aa > bb ) ? 1 : -1; + }); + + container.append( items ); + } + + // Make block editor tab sortable on load + sortBlock(); + + $( '.settings-toggle.block' ).on( 'focus', function( event ) { + $( '.wrap' ).removeClass( 'classic-active' ).addClass( 'block-active' ); + sortBlock(); + }); + + $( '.settings-toggle.classic' ).on( 'focus', function( event ) { + $( '.wrap' ).removeClass( 'block-active' ).addClass( 'classic-active' ); + sortClassic(); + }); + + $( '#menubar' ).on( 'change', function() { + $( '.tadv-mce-menu.tadv-classic-editor' ).toggleClass( 'enabled', $(this).prop('checked') ); + }); + + $( '#menubar_block' ).on( 'change', function() { + $( '.tadv-mce-menu.tadv-block-editor' ).toggleClass( 'enabled', $(this).prop('checked') ); + }); + + $( '#tadvadmins' ).on( 'submit', function() { + $( 'ul.container' ).each( function( i, node ) { + $( node ).find( '.tadv-button' ).attr( 'name', node.id ? node.id + '[]' : '' ); + }); + }); + + $( 'input[name="selected_text_color"]' ).on( 'change', function() { + if ( this.id === 'selected_text_color_yes' ) { + $( '.panel-block-text-color' ).removeClass( 'disabled' ); + } else { + $( '.panel-block-text-color' ).addClass( 'disabled' ); + } + } ); + + $( 'input[name="selected_text_background_color"]' ).on( 'change', function() { + if ( this.id === 'selected_text_background_color_yes' ) { + $( '.panel-block-background-color' ).removeClass( 'disabled' ); + } else { + $( '.panel-block-background-color' ).addClass( 'disabled' ); + } + } ); + + $( '.tadv-popout-help-toggle, .tadv-popout-help-close' ).on( 'click', function( event ) { + $( '.tadv-popout-help' ).toggleClass( 'hidden' ); + } ); + + $('#tadv-export-select').click( function() { + $('#tadv-export').focus().select(); + }); + + $importElement.change( function() { + $importError.empty(); + }); + + $('#tadv-import-verify').click( function() { + var string; + + string = ( $importElement.val() || '' ).replace( /^[^{]*/, '' ).replace( /[^}]*$/, '' ); + $importElement.val( string ); + + try { + JSON.parse( string ); + $importError.text( 'No errors.' ); + } catch( error ) { + $importError.text( error ); + } + }); + + function translate( str ) { + if ( window.tadvTranslation.hasOwnProperty( str ) ) { + return window.tadvTranslation[str]; + } + return str; + } + + if ( typeof window.tadvTranslation === 'object' ) { + $( '.tadvitem' ).each( function( i, element ) { + var $element = $( element ), + $descr = $element.find( '.descr' ), + text = $descr.text(); + + if ( text ) { + text = translate( text ); + $descr.text( text ); + $element.find( '.mce-ico' ).attr( 'title', text ); + } + }); + + $( '.tadv-mce-menu .tadv-translate' ).each( function( i, element ) { + var $element = $( element ), + text = $element.text(); + + if ( text ) { + $element.text( translate( text ) ); + } + }); + } +}); diff --git a/wp-content/themes/tortuga-child/style.css b/wp-content/themes/tortuga-child/style.css new file mode 100644 index 0000000..6f433e8 --- /dev/null +++ b/wp-content/themes/tortuga-child/style.css @@ -0,0 +1,3617 @@ +/* +Theme Name: Tortuga Child +Theme URI: +Author: +Author URI: +Description: Child theme for Tortuga. +Template: tortuga +Version: 2.1.3 +Requires at least: +Tested up to: +Requires PHP: +AMP: true +License: GNU General Public License v2 or later +License URI: http://www.gnu.org/licenses/gpl-2.0.html +Text Domain: tortuga +Tags: two-columns, custom-background, custom-header, custom-logo, custom-menu, editor-style, block-styles, rtl-language-support, grid-layout, blog, entertainment, news, featured-image-header, featured-images, flexible-header, custom-colors, full-width-template, sticky-post, threaded-comments, translation-ready, theme-options, one-column, left-sidebar, right-sidebar, three-columns + +This theme, like WordPress, is licensed under the GPL. +Use it to make something cool, have fun, and share what you've learned with others. + +Tortuga is based on Underscores http://underscores.me/, (C) 2012-2015 Automattic, Inc. + +Normalizing styles have been helped along thanks to the fine work of +Nicolas Gallagher and Jonathan Neal http://necolas.github.com/normalize.css/ +*/ + +/*-------------------------------------------------------------- +>>> TABLE OF CONTENTS: +---------------------------------------------------------------- +# - CSS Variables +# - Normalize +# - Typography +# - Elements +# - Forms +# - Accessibility +# - Alignments +# - Clearings +# - Site Layout +# - Header +# - Navigation +# - Social Icons Menu +# - Posts and pages +# - Archives and Blog Layouts +# - Blocks +# - Featured Posts +# - Widgets +# - Magazine Widgets +# - Comments +# - Media +# - Footer +# - Plugins +# - Media Queries for Typography +# - Media Queries for Layout +# - Media Queries for Navigation +# - Media Queries for Featured Posts +# - Media Queries for Media +# - Theme Options +--------------------------------------------------------------*/ + +/*-------------------------------------------------------------- +# - CSS Variables + --text-font: "OpenDyslexic", "Open Sans", arial, helvetica, sans-serif; + --title-font: "OpenDyslexic", "Titillium Web", arial, helvetica, sans-serif; + --navi-font: "OpenDyslexic", "Titillium Web", arial, helvetica, sans-serif; + --widget-title-font: "OpenDyslexic", "Titillium Web", arial, helvetica, sans-serif; +--------------------------------------------------------------*/ +:root { + --text-font: "OpenDyslexic", "Open Sans", arial, helvetica, sans-serif; + --title-font: "OpenDyslexic", "Titillium Web", arial, helvetica, sans-serif; + --navi-font: "OpenDyslexic", "Titillium Web", arial, helvetica, sans-serif; + --widget-title-font: "OpenDyslexic", "Titillium Web", arial, helvetica, sans-serif; + --title-font-weight: normal; + --navi-font-weight: normal; + --widget-title-font-weight: normal; + --title-text-transform: normal; + --navi-text-transform: normal; + --widget-title-text-transform: normal; + --text-line-height: 1.75; + --title-line-height: 1.4; +} + +/*-------------------------------------------------------------- +# - Normalize +--------------------------------------------------------------*/ +html { + font-family: sans-serif; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +body { + margin: 0; +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +main, +menu, +nav, +section, +summary { + display: block; +} + +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline; +} + +audio:not([controls]) { + display: none; + height: 0; +} + +[hidden], +template { + display: none; +} + +a { + background-color: transparent; +} + +a:active, +a:hover { + outline: 0; +} + +abbr[title] { + border-bottom: 1px dotted; +} + +b, +strong { + font-weight: bold; +} + +dfn { + font-style: italic; +} + +mark { + background: #ff0; + color: #000; +} + +small { + font-size: 80%; +} + +sub, +sup { + position: relative; + vertical-align: baseline; + font-size: 75%; + line-height: 0; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + border: 0; +} + +svg:not(:root) { + overflow: hidden; +} + +figure { + margin: 1em 40px; +} + +hr { + box-sizing: content-box; + height: 0; + width: 100%; +} + +code, +kbd, +pre, +samp { + font-size: 1em; + font-family: monospace, monospace; +} + +button, +input, +optgroup, +select, +textarea { + margin: 0; + color: inherit; + font: inherit; +} + +button { + overflow: visible; +} + +button, +select { + text-transform: none; +} + +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} + +button[disabled], +html input[disabled] { + cursor: default; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} + +input { + line-height: normal; +} + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; + padding: 0; +} + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +input[type="search"] { + box-sizing: content-box; + -webkit-appearance: textfield; +} + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +fieldset { + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; + border: 1px solid #c0c0c0; +} + +legend { + padding: 0; + border: 0; +} + +textarea { + overflow: auto; +} + +optgroup { + font-weight: bold; +} + +table { + border-spacing: 0; + border-collapse: collapse; +} + +td, +th { + padding: 0; +} + +/*-------------------------------------------------------------- +# - Typography +--------------------------------------------------------------*/ +body, +button, +input, +select, +textarea { + color: #20745E; + font-size: 17px; + font-size: 1.0625rem; + font-family: "Open Sans", arial, helvetica, sans-serif; + font-family: var(--text-font); + line-height: 1.75; + line-height: var(--text-line-height); +} + +h1, +h2, +h3, +h4, +h5, +h6 { + clear: both; + margin: 0.75em 0; + line-height: 1.4; + line-height: var(--title-line-height); +} + +h1 { + font-size: 36px; + font-size: 2.25rem; +} + +h2 { + font-size: 28px; + font-size: 1.75rem; +} + +h3 { + font-size: 24px; + font-size: 1.5rem; +} + +h4 { + font-size: 22px; + font-size: 1.375rem; +} + +h5 { + font-size: 20px; + font-size: 1.25rem; +} + +h6 { + font-size: 19px; + font-size: 1.1875rem; +} + +p { + margin-bottom: 1.5em; +} + +dfn, +cite, +em, +i { + font-style: italic; +} + +blockquote { + margin: 0 1.5em; +} + +address { + margin: 0 0 1.5em; +} + +pre { + overflow: auto; + margin-bottom: 1.5em; + padding: 1.5em; + max-width: 100%; + border: 1px solid #e5e5e5; + background: #f5f5f5; + font-size: 15px; + font-size: 0.9375rem; + font-family: "Courier 10 Pitch", Courier, monospace; + line-height: 1.6; +} + +code, +kbd, +tt, +var { + font-size: 15px; + font-size: 0.9375rem; + font-family: Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace; +} + +abbr, +acronym { + border-bottom: 1px dotted #666; + cursor: help; +} + +mark, +ins { + text-decoration: none; +} + +big { + font-size: 125%; +} + +/*-------------------------------------------------------------- +# - Elements +--------------------------------------------------------------*/ +html { + box-sizing: border-box; +} + +/* Inherit box-sizing to make it easier to change the property for components that leverage other behavior; see http://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/ */ +*, +*::before, +*::after { + box-sizing: inherit; +} + +body { + background: #ddd; /* Fallback for when there is no custom background color defined. */ +} + +blockquote { + margin: 0 0 1.5em; + padding: 0.05em 1.25em 1em; + border: 1px solid #ddd; + border-left: 3px solid #20745D; + color: #777; + font-style: italic; + font-size: 18px; + font-size: 1.125rem; +} + +blockquote cite, +blockquote small { + display: block; + margin-top: 1em; + color: #404040; + font-size: 16px; + font-size: 1rem; + line-height: 1.75; +} + +blockquote cite:before, +blockquote small:before { + content: "\2014\00a0"; +} + +blockquote em, +blockquote i, +blockquote cite { + font-style: normal; +} + +blockquote > :last-child { + margin-bottom: 0.5em; +} + +hr { + margin-bottom: 1.5em; + height: 1px; + border: 0; + background-color: #ddd; +} + +ul, +ol { + margin: 0 0 1.5em; + padding: 0 0 0 1.25em; +} + +ul { + list-style: disc; +} + +ol { + list-style: decimal; +} + +li > ul, +li > ol { + margin-bottom: 0; + margin-left: 1.5em; +} + +dt { + font-weight: bold; +} + +dd { + margin: 0 0 1.5em; +} + +img { + max-width: 100%; /* Adhere to container width. */ + height: auto; /* Make sure images are scaled correctly. */ + margin-top: 1em; + margin-right: 1em; + margin-bottom: 1em; +} + +table { + margin: 0 0 1.5em; + width: 100%; + border: none; + table-layout: fixed; +} + +th, +td { + padding: 0.3em 0.6em; + border: 1px solid #ddd; +} + +a { + color: #20745D; + text-decoration: none; +} + +a:link, +a:visited { + color: rgb(130, 160, 131); +} + +a:hover, +a:focus, +a:active { + color: #20745D; +} + +a:focus { + outline: thin dotted; +} + +a:hover, +a:active { + outline: 0; +} + +/*-------------------------------------------------------------- +# - Forms +--------------------------------------------------------------*/ +button, +input[type="button"], +input[type="reset"], +input[type="submit"] { + margin: 0; + padding: 0.6em 1em; + border: none; + background: #20745D; + color: #fff; + text-decoration: none; + font-size: 17px; + font-size: 1.0625rem; + transition: all 0.2s ease; +} + +button:hover, +input[type="button"]:hover, +input[type="reset"]:hover, +input[type="submit"]:hover, +button:focus, +input[type="button"]:focus, +input[type="reset"]:focus, +input[type="submit"]:focus, +button:active, +input[type="button"]:active, +input[type="reset"]:active, +input[type="submit"]:active { + background: #20745E; +} + +input[type="text"], +input[type="email"], +input[type="url"], +input[type="password"], +input[type="search"], +textarea { + padding: 0.3em 0.6em; + max-width: 100%; + border: 1px solid #ddd; + color: #666; +} + +input[type="text"]:focus, +input[type="email"]:focus, +input[type="url"]:focus, +input[type="password"]:focus, +input[type="search"]:focus, +textarea:focus { + border: 1px solid #ccc; + color: rgb(130, 160, 131); +} + +textarea { + width: 100%; +} + +/*-------------------------------------------------------------- +# - Accessibility +--------------------------------------------------------------*/ + +/* Text meant only for screen readers. */ +.screen-reader-text { + position: absolute !important; + overflow: hidden; + clip: rect(1px, 1px, 1px, 1px); + width: 1px; + height: 1px; +} + +.screen-reader-text:hover, +.screen-reader-text:active, +.screen-reader-text:focus { + top: 5px; + left: 5px; + z-index: 100000; /* Above WP toolbar. */ + display: block; + clip: auto !important; + padding: 15px 23px 14px; + width: auto; + height: auto; + border-radius: 3px; + background-color: #f1f1f1; + box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6); + color: #21759b; + text-decoration: none; + font-weight: bold; + font-size: 14px; + font-size: 0.875rem; + line-height: normal; +} + +/*-------------------------------------------------------------- +# - Alignments +--------------------------------------------------------------*/ +.alignleft { + float: left; + margin-right: 1.5em; +} + +.alignright { + float: right; + margin-left: 1.5em; +} + +.aligncenter { + display: block; + clear: both; + margin-right: auto; + margin-left: auto; + text-align: center; +} + +/*-------------------------------------------------------------- +# - Clearings +--------------------------------------------------------------*/ +.clearfix:before, +.clearfix:after, +.post-navigation .nav-links:before, +.post-navigation .nav-links:after, +.comment-navigation:before, +.comment-navigation:after { + display: table; + content: ""; +} + +.clearfix:after, +.post-navigation .nav-links:after, +.comment-navigation:after { + clear: both; +} + +/*-------------------------------------------------------------- +# - Site Layout +--------------------------------------------------------------*/ +.site { + margin: 0; + width: 100%; +} + +.container { + margin: 0 auto; + padding: 0 2rem; + max-width: 1320px; + width: 100%; +} + +.site-content { + padding-top: 2rem; +} + +.content-area { + float: left; + box-sizing: border-box; + padding-right: 2rem; + width: 73%; +} + +.sidebar { + float: right; + width: 27%; + background-color: #131516; + color: #d8d4cf; +} + +/* No Sidebar & Centered Layout Template */ +.no-sidebar .content-area, +.site-content .centered-content-area { + float: none; + margin: 0 auto; + padding: 0; + max-width: 86%; + width: 100%; +} + +.post-layout-three-columns .content-archive { + max-width: 100%; +} + +/* Fullwidth Template */ +.site-content .fullwidth-content-area { + float: none; + margin: 0; + padding: 0; + max-width: 100%; + width: 100%; +} + +/*-------------------------------------------------------------- +# - Header +--------------------------------------------------------------*/ +.site-header { + background: #20745E; + color: #fff; +} + +.header-main { + padding-top: 0; + padding-bottom: 0; + display: flex; + justify-content: center; + align-content: center; +} + +.site-branding { + float: left; + margin: 1em 0; + padding: 0; + max-width: 100%; +} + +.site-branding a:link, +.site-branding a:visited, +.site-branding a:hover { + padding: 0; + border: none; + text-decoration: none; +} + +.site-title { + display: inline-block; + margin: 0.15em 0; + padding: 0; + color: #fff; + text-decoration: none; + font-size: 36px; + font-size: 2.25rem; + font-family: "Titillium Web", arial, helvetica, sans-serif; + font-family: var(--title-font); + font-weight: normal; + font-weight: var(--title-font-weight); + text-transform: uppercase; + text-transform: var(--title-text-transform); + line-height: 1.4; + line-height: var(--title-line-height); +} + +.site-title a:link, +.site-title a:visited { + color: #fff; + transition: all 0.2s ease; +} + +.site-title a:hover, +.site-title a:active { + color: rgba(255, 255, 255, 0.6); +} + +.site-branding .custom-logo { + float: left; + margin: 0.5em 1em 0 0; + padding: 0; + max-width: 100%; + height: auto; + border: none; + vertical-align: top; +} + +.site-description { + margin: 0 0 0.75em; + font-size: 15px; + font-size: 0.9375rem; +} + +/* Header Widgets */ +.header-widgets { + display: inline; +} + +.header-widget { + float: right; + margin: 0.5em 0 0 1.5em; +} + +.header-widget ul { + margin: 0; + padding: 0; +} + +.header-widget-title { + margin: 0 0 0.5em; +} + +/* Custom Header Image */ +.header-image { + text-align: center; +} + +.header-image img { + max-width: 1920px; + width: 100%; + height: auto; + vertical-align: top; +} + +/*-------------------------------------------------------------- +# - Navigation +--------------------------------------------------------------*/ +.primary-navigation-wrap { + border-bottom: 5px solid #20745D; + background: rgba(0, 0, 0, 0.15); + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.05); + color: #fff; +} + +.primary-navigation-container { + position: relative; +} + +.primary-navigation { + position: relative; + width: 100%; + display: flex; + justify-content: center; + align-content: center; +} + +/* Hide the menu on small screens when JavaScript is available. */ +/* +.main-navigation ul, +.main-navigation .menu-item-has-children > a > .icon, +.main-navigation ul a > .icon { + display: none; +} +*/ +button.menu-toggle { + display: none; +} + +.main-navigation.toggled-on > ul.menu { + display: block; +} + +/* Main Navigation Toggle */ +.primary-menu-toggle { + display: flex; + margin: 0; + padding: 0.8em 1.2em; + border: none; + background: #20745D; + color: #fff; + text-decoration: none; + font-size: 16px; + font-size: 1rem; + font-family: "Titillium Web", arial, helvetica, sans-serif; + font-family: var(--navi-font); + font-weight: normal; + font-weight: var(--navi-font-weight); + text-transform: uppercase; + text-transform: var(--navi-text-transform); + text-align: left; + transition: all 0.2s ease; + align-items: center; +} + +.primary-menu-toggle:focus { + outline: thin dotted; + color: #fff; + background: #20745D; +} + +.primary-menu-toggle:hover, +.primary-menu-toggle:active { + color: rgba(255, 255, 255, 0.5); + background: #20745D; + cursor: pointer; +} + +.primary-menu-toggle .icon { + margin: 0; + width: 24px; + height: 24px; + vertical-align: top; + fill: #fff; +} + +.primary-menu-toggle[aria-expanded="true"] .icon-menu, +.primary-menu-toggle[aria-expanded="false"] .icon-close { + display: none; +} + +.primary-menu-toggle[aria-expanded="true"] .icon-close { + display: inline-block; +} + +/* Menu Items Styling */ +.main-navigation ul { + margin: 0; + padding: 0; + color: #fff; + list-style: none; + font-size: 16px; + font-size: 1rem; + font-family: "Titillium Web", arial, helvetica, sans-serif; + font-family: var(--navi-font); + font-weight: normal; + font-weight: var(--navi-font-weight); + text-transform: uppercase; + text-transform: var(--navi-text-transform); +} + +.main-navigation > ul { + padding: 3px 0; + border-top: 5px solid #20745D; +} + +.main-navigation ul li { + position: relative; + margin: 0; + float: left; +} + +.main-navigation ul a { + display: block; + margin: 0; + padding: 0.5em; + border-bottom: 1px dotted rgba(255, 255, 255, 0.2); + text-decoration: none; +} + +.main-navigation ul li:last-child > a { + border-bottom: none; +} + +.main-navigation ul a, +.main-navigation ul a:link, +.main-navigation ul a:visited { + color: #fff; + text-decoration: none; + transition: all 0.2s ease; +} + +.main-navigation ul a:hover, +.main-navigation ul a:active, +.main-navigation ul a:focus { + background-color: #20745D; +} + +.main-navigation ul li.current-menu-item > a { + background-color: #20745D; +} + +/* Submenus */ +.main-navigation ul ul { + font-size: 13px; + font-size: 0.8125rem; +} + +.is-amp-page .main-navigation ul button.toggled-on + ul, +.main-navigation ul ul.toggled-on { + display: block; +} + +.main-navigation ul ul a { + padding-left: 3em; +} + +.main-navigation ul ul ul a { + padding-left: 4.5em; +} + +.main-navigation ul ul ul ul a { + padding-left: 6em; +} + +/* Submenu Dropdown Toggles */ +.main-navigation .dropdown-toggle { + position: absolute; + display: block; + top: 0; + right: 0; + padding: 0.9em 1.5em; + background: none; + border: none; +} + +.main-navigation .dropdown-toggle:focus { + outline: thin dotted; + color: #fff; + background: none; +} + +.main-navigation .dropdown-toggle:hover, +.main-navigation .dropdown-toggle:active { + background-color: #20745D; +} + +.main-navigation .dropdown-toggle .icon { + margin: 0.2em 0 0; + width: 20px; + height: 20px; + vertical-align: top; + fill: #131516; +} + +.main-navigation .dropdown-toggle.toggled-on .icon { + -ms-transform: rotate(-180deg); /* IE 9 */ + -webkit-transform: rotate(-180deg); /* Chrome, Safari, Opera */ + transform: rotate(-180deg); +} + +.main-navigation ul ul .dropdown-toggle { + padding: 0.6em 1.2em; +} + +.main-navigation ul ul .dropdown-toggle .icon { + width: 18px; + height: 18px; +} + +/*-------------------------------------------------------------- +# - Social Icons Menu +--------------------------------------------------------------*/ +.social-icons-menu { + margin: 0; + padding: 0; + list-style-position: outside; + list-style-type: none; + line-height: 1; +} + +.social-icons-menu li { + float: left; + margin: 0; + padding: 0; +} + +.social-icons-menu li * { + position: relative; + display: inline-block; + padding: 0.5em; + text-decoration: none; + color: #fff; +} + +.social-icons-menu li a .screen-reader-text { + display: none; +} + +/* Add Genericons */ +.social-icons-menu li a:before, li.social-icons-menu { + display: inline-block; + vertical-align: top; + text-decoration: inherit; + font-size: 16px; + font-family: 'Genericons'; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.social-icons-menu li a:before { + content: '\f408'; +} + +/* Default Icon */ +.social-icons-menu li a[href*="codepen.io"]:before { + content: '\f216'; +} + +.social-icons-menu li a[href*="digg.com"]:before { + content: '\f221'; +} + +.social-icons-menu li a[href*="dribbble.com"]:before { + content: '\f201'; +} + +.social-icons-menu li a[href*="facebook.com"]:before { + content: '\f204'; +} + +.social-icons-menu li a[href*="flickr.com"]:before { + content: '\f211'; +} + +.social-icons-menu li a[href*="plus.google.com"]:before { + content: '\f218'; +} + +.social-icons-menu li a[href*="github.com"]:before { + content: '\f200'; +} + +.social-icons-menu li a[href*="instagram.com"]:before { + content: '\f215'; +} + +.social-icons-menu li a[href*="linkedin.com"]:before { + content: '\f207'; +} + +.social-icons-menu li a[href*="pinterest.com"]:before { + content: '\f209'; +} + +.social-icons-menu li a[href*="polldaddy.com"]:before { + content: '\f217'; +} + +.social-icons-menu li a[href*="getpocket.com"]:before { + content: '\f224'; +} + +.social-icons-menu li a[href*="reddit.com"]:before { + content: '\f222'; +} + +.social-icons-menu li a[href*="spotify.com"]:before { + content: '\f515'; +} + +.social-icons-menu li a[href*="skype.com"]:before, +.social-icons-menu li a[href*="skype:"]:before { + content: '\f220'; +} + +.social-icons-menu li a[href*="stumbleupon.com"]:before { + content: '\f223'; +} + +.social-icons-menu li a[href*="tumblr.com"]:before { + content: '\f214'; +} + +.social-icons-menu li a[href*="twitch.tv"]:before { + content: '\f516'; +} + +.social-icons-menu li a[href*="twitter.com"]:before { + content: '\f202'; +} + +.social-icons-menu li a[href*="vimeo.com"]:before { + content: '\f212'; +} + +.social-icons-menu li a[href*="wordpress.org"]:before { + content: '\f205'; +} + +.social-icons-menu li a[href*="wordpress.com"]:before { + content: '\f205'; +} + +.social-icons-menu li a[href*="youtube.com"]:before { + content: '\f213'; +} + +.social-icons-menu li a[href*="newsletter"]:before, +.social-icons-menu li a[href*="mailto"]:before { + content: '\f410'; +} + +.social-icons-menu li a[href*="/feed"]:before, +.social-icons-menu li a[href*="/feed/"]:before, +.social-icons-menu li a[href*="?feed=rss2"]:before, +.social-icons-menu li a[href*="feedburner.google.com"]:before, +.social-icons-menu li a[href*="feedburner.com"]:before { + content: '\f413'; +} + +/*-------------------------------------------------------------- +# - Posts and pages +--------------------------------------------------------------*/ +.type-post, +.type-page, +.type-attachment, +.comments-area, +.site-main > article:not(.type-post):not(.type-page):not(.type-attachment), +.post-wrapper > .post-column > article:not(.type-post):not(.type-page):not(.type-attachment) { + margin: 0 0 2em 0; + padding: 1.5em; + max-width: 100%; + border-top: 3px solid #20745D; + background-color: #131516; + color: #d8d4cf; + box-shadow: 0 2px 2px #aaa; +} + +.archive-title, +.page-title, +.entry-title { + margin: 0; + padding: 0; + background-color: #131516; + color: #d8d4cf; + -ms-word-wrap: break-word; + word-wrap: break-word; + font-size: 28px; + font-size: 1.75rem; + font-family: "Titillium Web", arial, helvetica, sans-serif; + font-family: var(--title-font); + font-weight: normal; + font-weight: var(--title-font-weight); + text-transform: uppercase; + text-transform: var(--title-text-transform); + line-height: 1.4; + line-height: var(--title-line-height); +} + +.entry-title a:link, +.entry-title a:visited { + background-color: #131516; + color: rgb(130, 160, 131); + text-decoration: none; + transition: all 0.2s ease; +} + +.entry-title a:hover, +.entry-title a:active { + color: #20745E; +} + +.type-post .wp-post-image, +.type-page .wp-post-image, +.site-main > article:not(.type-post):not(.type-page):not(.type-attachment) .wp-post-image, +.post-wrapper > .post-column > article:not(.type-post):not(.type-page):not(.type-attachment) .wp-post-image { + margin: 0 0 0.5em; +} + +.entry-content a { + text-decoration: underline; +} + +.sticky { + border-width: 5px; +} + +/* Page Links | wp_link_pages() */ +.page-links { + margin: 0 0 1.5em; + word-spacing: 0.75em; + font-weight: bold; +} + +/* Entry Meta */ +.entry-meta { + margin: 0; + padding: 0; + color: rgb(130, 160, 131); + font-size: 14px; + font-size: 0.875rem; +} + +.entry-meta .meta-date, +.entry-meta .meta-author, +.entry-meta .meta-category, +.entry-meta .meta-comments { + margin-right: 1.5em; +} + +.entry-meta a:link, +.entry-meta a:visited { + color: rgb(130, 160, 131); +} + +.entry-meta a:hover, +.entry-meta a:active { + color: #20745D; +} + +.entry-meta span::before { + display: inline-block; + margin-right: 0.2em; + vertical-align: middle; + font: normal 16px 'Genericons'; + -webkit-font-smoothing: antialiased; +} + +.entry-meta .meta-date::before { + content: '\f307'; +} + +.entry-meta .meta-author::before { + content: '\f304'; +} + +.entry-meta .meta-category::before { + content: '\f301'; +} + +.entry-meta .meta-comments::before { + content: '\f300'; +} + +/* Hide post meta if they are deactivated in settings */ +body.date-hidden .type-post .entry-meta .meta-date, +body.author-hidden .type-post .entry-meta .meta-author, +body.categories-hidden .type-post .entry-meta .meta-category, +body.comments-hidden .type-post .entry-meta .meta-comments, +body.date-hidden .post-slider .entry-meta .meta-date, +body.author-hidden .post-slider .entry-meta .meta-author { + position: absolute; + clip: rect(1px, 1px, 1px, 1px); +} + +body.date-hidden.author-hidden.categories-hidden.comments-hidden .content-area .type-post .entry-meta { + display: none; +} + +/* Entry Tags & Tagcloud Widget */ +.entry-tags { + margin: 0 0 1.5em; +} + +.widget_tag_cloud .tagcloud, +.entry-tags .meta-tags { + font-size: 14px; + font-size: 0.875rem; +} + +.widget_tag_cloud .tagcloud::before, +.widget_tag_cloud .tagcloud::after, +.entry-tags .meta-tags::before, +.entry-tags .meta-tags::after { + display: table; + content: ""; +} + +.widget_tag_cloud .tagcloud::after, +.entry-tags .meta-tags::after { + clear: both; +} + +.widget_tag_cloud .tagcloud a, +.entry-tags .meta-tags a { + display: inline-block; + float: left; + margin: 0 2px 2px 0; + padding: 0.2em 0.5em; + background: #20745E; + text-decoration: none; + text-transform: uppercase; + font-size: 12px !important; + font-size: 0.75rem !important; +} + +.widget_tag_cloud .tagcloud a:link, +.widget_tag_cloud .tagcloud a:visited, +.entry-tags .meta-tags a:link, +.entry-tags .meta-tags a:visited { + color: #fff; + transition: all 0.2s ease; +} + +.widget_tag_cloud .tagcloud a:hover, +.widget_tag_cloud .tagcloud a:active, +.entry-tags .meta-tags a:hover, +.entry-tags .meta-tags a:active { + background: #20745D; + color: #fff; +} + +/* Read more Link */ +.more-link { + display: inline-block; + margin: 0; + padding: 0.6em 1em; + background: #20745D; + color: #fff; + text-decoration: none; + font-size: 15px; + font-size: 0.9375rem; + transition: all 0.2s ease; +} + +.more-link:link, +.more-link:visited { + color: #fff; +} + +.more-link:hover, +.more-link:active { + background: #20745E; + text-decoration: none; +} + +.more-link::after { + content: " \00BB"; +} + +/* Post Navigation */ +.post-navigation { + margin: 0; +} + +.post-navigation .nav-links .nav-previous { + float: left; +} + +.post-navigation .nav-links .nav-next { + float: right; +} + +.post-navigation .nav-links .nav-previous a::before { + margin-right: 3px; + content: "\00AB"; +} + +.post-navigation .nav-links .nav-next a::after { + margin-left: 4px; + content: "\00BB"; +} + +.post-navigation .nav-links a { + display: inline-block; + margin: 0 0 3px; + padding: 0.3em 0.8em; + background: #20745D; + color: #fff; + text-decoration: none; + font-size: 14px; + font-size: 0.875rem; + transition: all 0.2s ease; +} + +.post-navigation .nav-links a:link, +.post-navigation .nav-links a:visited { + color: #fff; +} + +.post-navigation .nav-links a:hover, +.post-navigation .nav-links a:active { + background: #20745E; +} + +/*-------------------------------------------------------------- +# - Archives and Blog Layouts +--------------------------------------------------------------*/ + +/* Archives and Search Heading */ +.page-header { + margin: 0 0 2em 0; + padding: 1.5em; + border-top: 3px solid #20745D; + background: #131516; + box-shadow: 0 2px 2px #aaa; +} + +.blog-description, +.archive-description p { + margin-bottom: 0; +} + +/* Post Columns */ +.post-layout-columns .post-wrapper { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -2em; +} + +.post-layout-columns .post-wrapper .post-column { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + box-sizing: border-box; + padding-right: 2em; +} + +.post-layout-columns .post-wrapper .post-column article { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; +} + +.post-layout-columns .post-wrapper .post-column article .entry-title { + font-size: 22px; + font-size: 1.375rem; +} + +.post-layout-columns .post-wrapper .post-column article .entry-content { + flex-grow: 1; + font-size: 16px; + font-size: 1rem; + -webkit-box-flex: 1; + -ms-flex-positive: 1; +} + +.post-layout-columns .post-wrapper .post-column article .more-link { + font-size: 15px; + font-size: 0.9375rem; +} + +/* 2 Columns */ +.post-layout-two-columns .post-wrapper .post-column { + width: 50%; +} + +/* 3 Columns */ +.post-layout-three-columns .content-archive { + float: none; + padding: 0; + width: 100%; +} + +.post-layout-three-columns .post-wrapper .post-column { + width: 33.3333333333333%; +} + +/* Post Columns Fixes for IE 10 and IE 11*/ +@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { + .post-layout-columns .post-wrapper .post-column, + .post-layout-columns .post-wrapper .post-column article { + display: block; + } +} + +/* Theme Pagination */ +.pagination { + margin: 0 0 2em; +} + +.pagination a, +.pagination .current { + display: inline-block; + margin: 0 3px 3px 0; + padding: 0.4em 1em; + background: #20745E; + color: #fff; + text-align: center; + text-decoration: none; +} + +.pagination a:link, +.pagination a:visited { + color: #fff; +} + +.pagination a:hover, +.pagination a:active, +.pagination .current { + background: #20745D; +} + +/* Infinite Scroll Pagination */ +.infinite-scroll .pagination { + display: none; +} + +.infinite-scroll #infinite-handle, +.infinite-scroll .infinite-loader { + width: 100%; + text-align: center; +} + +.infinite-scroll .infinite-loader .spinner { + bottom: -1em; + left: auto; + margin: 0 auto; +} + +.infinite-scroll #infinite-handle span { + display: inline-block; + margin: 0 0 2em; + padding: 0.4em 1em; + background: #20745E; + text-decoration: none; + font-size: 17px; + font-size: 1.0625rem; +} + +.infinite-scroll #infinite-handle span:hover { + background: #20745D; +} + +/*-------------------------------------------------------------- +# - Blocks +--------------------------------------------------------------*/ + +/* Audio */ +.wp-block-audio audio { + width: 100%; +} + +/* Separator */ +.wp-block-separator { + height: 2px; +} + +.wp-block-separator:not(.is-style-wide):not(.is-style-dots) { + max-width: 100px; +} + +/* Quote */ +.wp-block-quote.is-style-large { + border: none; + margin: 0 0 1.5em; + padding: 0; + font-size: 28px; + font-size: 1.75rem; +} + +.wp-block-quote.is-style-large p { + margin-bottom: 0.5em; + font-size: inherit; + font-style: inherit; + line-height: inherit; +} + +.wp-block-quote.is-style-large cite { + text-align: inherit; +} + +/* Pullquote */ +.wp-block-pullquote { + margin-bottom: 1.5em; + padding: 1.5em 0; + border-bottom: 3px solid #ddd; + border-top: 3px solid #ddd; +} + +.wp-block-pullquote blockquote { + border: none; + margin: 0; + padding: 0; + font-size: 28px; + font-size: 1.75rem; +} + +.wp-block-pullquote blockquote p { + margin-bottom: 0.5em; +} + +/* Cover */ +.wp-block-cover { + display: flex; +} + +.wp-block-cover-text { + margin-top: 0; + margin-bottom: 0; +} + +/* Image */ +.wp-block-image .alignleft { + margin-right: 1.5em; +} + +.wp-block-image .alignright { + margin-left: 1.5em; +} + +/* Captions */ +.blocks-gallery-caption, +.wp-block-embed figcaption, +.wp-block-image figcaption { + margin-top: 0.3em; + margin-bottom: 1em; + color: #555; + font-size: 13px; + font-size: 0.8125rem; + text-align: center; +} + +/* Latest Posts */ +.wp-block-latest-posts.wp-block-latest-posts__list { + margin: 0; + padding: 0; +} + +/* Table */ +.wp-block-table table { + table-layout: auto; +} + +/* Block Text Colors */ +.has-primary-color { + color: #20745D; +} + +.has-white-color { + color: #131516; +} + +.has-light-gray-color { + color: #131516; +} + +.has-dark-gray-color { + color: #d8d4cf; +} + +.has-black-color { + color: #20745E; +} + +/* Block Background Colors */ +.has-primary-background-color { + background-color: #20745D; +} + +.has-white-background-color { + background-color: #131516; +} + +.has-light-gray-background-color { + background-color: #f0f0f0; +} + +.has-dark-gray-background-color { + background-color: #d8d4cf; +} + +.has-black-background-color { + background-color: #20745E; +} + +/*-------------------------------------------------------------- +# - Widgets +--------------------------------------------------------------*/ +.widget { + margin: 0 0 2em 0; + padding: 1em 1.5em 1.5em; + max-width: 100%; + border-top: 3px solid #20745D; + background: #fff; + box-shadow: 0 2px 2px #aaa; + -ms-word-wrap: break-word; + word-wrap: break-word; + background-color: #131516; + color: #d8d4cf; +} + +.widget-header { + margin: 0 0 1em 0; +} + +.site-footer { + max-width: 100%; +} + +.widget-footer { + display: flex; + flex-direction: row; + flex-flow: center; + justify-content: center; +} + +.widget-footer-box { + max-width: 100%; + margin: 2%; +} + +.widget-footer-box.widget_text { + max-width: 15%; +} + +.widget-title { + display: block; + margin: 0; + padding: 0; + color: #fff; + font-size: 20px; + font-size: 1.25rem; + font-family: "Titillium Web", arial, helvetica, sans-serif; + font-family: var(--widget-title-font); + font-weight: normal; + font-weight: var(--widget-title-font-weight); + text-transform: uppercase; + text-transform: var(--widget-title-text-transform); + line-height: 1.4; + line-height: var(--title-line-height); +} + +.widget ul { + margin: 0; + padding: 0; + list-style: circle inside; +} + +.widget ul .children, +.widget ul .sub-menu { + margin: 0.5em 0 0.5em 1em; + padding: 0; +} + +/* Make sure select elements fit in widgets. */ +.widget select { + max-width: 100%; +} + +/* Theme Search Widget */ +.search-form { + position: relative; + display: block; + overflow: hidden; + margin: 0; + padding: 0; + width: 100%; +} + +.search-form .screen-reader-text { + display: none; +} + +.search-form .search-field { + display: inline-block; + box-sizing: border-box; + margin: 0; + padding: 0.5em 1.5em 0.5em 0.7em; + width: 100%; + -webkit-appearance: none; +} + +.search-form .search-submit { + position: absolute; + top: 0; + right: 0; + padding: 0.65em 0.75em 0 0.2em; + border: none; + cursor: pointer; + transition: all 0.2s ease; +} + +.search-form .search-submit .genericon-search { + display: inline-block; + padding: 0.05em 0 0.55em 0.45em; + color: #fff; + content: '\f400'; + vertical-align: middle; + text-decoration: inherit; + font-weight: normal; + font-style: normal; + font-size: 24px; + font-family: 'Genericons'; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/* Theme Calendar Widget */ +.widget_calendar { + font-size: 14px; + font-size: 0.875rem; +} + +.widget_calendar table { + margin: 0; +} + +.widget_calendar table caption { + padding: 0 0 1em; +} + +.widget_calendar table thead tr { + background: #131516; +} + +.widget_calendar table tr td { + text-align: center; +} + +.widget_calendar table tbody tr td a { + font-weight: bold; +} + +.widget_calendar table tfoot tr td { + padding-top: 1em; + border: none; +} + +.widget_calendar table tfoot tr #prev { + text-align: left; +} + +.widget_calendar table tfoot tr #next { + text-align: right; +} + +/*-------------------------------------------------------------- +# - Magazine Widgets +--------------------------------------------------------------*/ +.widget-magazine-posts { + margin-bottom: -1em; +} + +.widget-magazine-posts .type-post { + margin: 0 0 1.5em 0; + padding: 0; + border: none; + background: none; + box-shadow: none; +} + +.widget-magazine-posts .type-post .wp-post-image { + margin: 0; + max-width: 100%; +} + +.widget-magazine-posts .type-post .entry-title { + display: inline; +} + +.widget-magazine-posts .type-post .entry-content { + font-size: 16px; + font-size: 1rem; +} + +.widget-magazine-posts .type-post .entry-content p { + margin: 1em 0 0; +} + +.widget-magazine-posts .type-post .more-link { + margin: 1em 0 0; + text-decoration: none; +} + +.widget-magazine-posts .large-post .entry-title { + font-size: 22px; + font-size: 1.375rem; +} + +.widget-magazine-posts .medium-post { + display: block; + float: left; + box-sizing: border-box; + padding-right: 1.5em; + width: 33.33333333%; +} + +.widget-magazine-posts .medium-post .entry-title { + font-size: 17px; + font-size: 1.0625rem; +} + +.widget-magazine-posts .small-post { + display: block; + float: left; + box-sizing: border-box; + width: 100%; +} + +.widget-magazine-posts .small-post .wp-post-image { + float: left; + margin: 0 1em 0 0; + max-width: 40%; +} + +.widget-magazine-posts .small-post .entry-title { + font-size: 16px; + font-size: 1rem; +} + +.widget-magazine-posts .medium-post .entry-meta, +.widget-magazine-posts .small-post .entry-meta { + font-size: 12px; + font-size: 0.75rem; +} + +/* Magazine Posts Horizontal Box Widget */ +.widget-magazine-posts .magazine-horizontal-box .large-post .wp-post-image { + float: left; + box-sizing: border-box; + margin: 0; + padding-right: 0.75em; + width: 50%; +} + +.widget-magazine-posts .magazine-horizontal-box .large-post .post-content { + float: right; + box-sizing: border-box; + padding-left: 0.75em; + width: 50%; +} + +.widget-magazine-posts .magazine-horizontal-box .medium-posts { + margin-right: -1.5em; +} + +/* Magazine Posts Vertical Box Widget */ +.widget-magazine-posts .magazine-vertical-box .large-post { + float: left; + box-sizing: border-box; + margin-bottom: 1em; + padding-right: 0.75em; + width: 50%; +} + +.widget-magazine-posts .magazine-vertical-box .small-posts { + box-sizing: border-box; + margin-left: 50%; + padding-left: 0.75em; + width: 50%; +} + +/* Magazine Posts Grid Widget */ +.widget-magazine-posts .magazine-grid { + margin-right: -1.5em; +} + +.widget-magazine-posts .magazine-grid .large-post { + float: left; + box-sizing: border-box; + padding-right: 1.5em; + width: 50%; +} + +.widget-magazine-posts .magazine-grid .post-column:nth-child(2n+1) .large-post, +.widget-magazine-posts .magazine-grid .post-column:nth-child(3n+1) .medium-post { + clear: left; +} + +/* Magazine Posts Columns Widget */ +.tortuga-magazine-columns-widget { + padding: 0; + border: none; + background: none; + box-shadow: none; +} + +.tortuga-magazine-columns-widget .widget-magazine-posts { + margin-bottom: 0; +} + +.widget-magazine-posts-columns .magazine-posts-columns .magazine-posts-columns-content { + float: left; + width: 100%; + margin: 0; + padding: 1em 1.5em 1.5em; + max-width: 100%; + border-top: 3px solid #20745D; + background: #fff; + box-shadow: 0 2px 2px #aaa; + -ms-word-wrap: break-word; + word-wrap: break-word; +} + +.widget-magazine-posts-columns .magazine-posts-columns .magazine-posts-columns-content .magazine-posts-columns-post-list { + float: left; + box-sizing: border-box; + margin-bottom: -1.5em; + width: 100%; +} + +.widget-magazine-posts-columns .magazine-posts-column-left { + float: left; + box-sizing: border-box; + padding-right: 1em; + width: 50%; +} + +.widget-magazine-posts-columns .magazine-posts-column-right { + box-sizing: border-box; + margin-left: 50%; + padding-left: 1em; + width: 50%; +} + +.widget-magazine-posts-columns .medium-post { + padding-right: 0; + width: 100%; +} + +/*-------------------------------------------------------------- +# - Comments +--------------------------------------------------------------*/ +.comments-area { + padding: 1em 1.5em; +} + +/* Comment Header */ +.comments-header, +.comment-reply-title { + margin: 0 0 1em 0; +} + +.comments-header .comments-title, +.comment-reply-title span { + display: inline-block; + margin: 0; + padding: 0; + color: #20745D; + -ms-word-wrap: break-word; + word-wrap: break-word; + font-size: 20px; + font-size: 1.25rem; + font-family: "Titillium Web", arial, helvetica, sans-serif; + font-family: var(--widget-title-font); + font-weight: normal; + font-weight: var(--widget-title-font-weight); + text-transform: uppercase; + text-transform: var(--widget-title-text-transform); + line-height: 1.4; + line-height: var(--title-line-height); +} + +/* Comment List */ +.comment-list { + margin: 0; + padding: 0; + list-style: none; +} + +.comment { + margin: 0 0 1.5em; + padding: 1.5em 0 0; + border-top: 1px dotted #aaa; + -ms-word-wrap: break-word; + word-wrap: break-word; +} + +.comment-meta { + float: left; + padding: 0; + width: 100%; +} + +.comment-meta .comment-author img { + float: left; + margin-right: 1em; +} + +.bypostauthor { + display: block; +} + +.comment-meta .comment-metadata { + margin-top: 0.3em; + font-size: 14px; + font-size: 0.875rem; +} + +.comment-meta .comment-metadata a { + margin-right: 1em; +} + +.comment-content { + clear: left; + padding: 0.2em 0 0; +} + +.comment-content a { + word-wrap: break-word; +} + +.comment ol.children { + margin: 1.5em 0 0; + list-style: none; +} + +.comment .comment-respond { + margin-top: 1.5em; +} + +/* Comment Pagination */ +.comment-navigation { + margin: 0 0 1.5em; + padding: 0; + font-size: 14px; + font-size: 0.875rem; +} + +.comment-navigation .nav-previous { + float: left; +} + +.comment-navigation .nav-next { + float: right; +} + +.comment-navigation .nav-previous a:before { + margin-right: 3px; + content: "\00AB"; +} + +.comment-navigation .nav-next a:after { + margin-left: 4px; + content: "\00BB"; +} + +/* Comment Form */ +.comment-form { + padding: 0; +} + +.comment-form label { + display: inline-block; + min-width: 150px; + font-weight: bold; +} + +.comment-form textarea { + margin-top: 0.4em; +} + +.comment-form .form-submit { + margin-bottom: 1em; +} + +.comment-form input[type="checkbox"] + label { + display: inline; + padding-left: 0.5em; + font-weight: normal; +} + +.comment-reply-title small a { + margin-left: 1em; + text-decoration: underline; + font-weight: normal; + font-size: 14px; + font-size: 0.875rem; +} + +/*-------------------------------------------------------------- +# - Media +--------------------------------------------------------------*/ +.page-content .wp-smiley, +.entry-content .wp-smiley, +.comment-content .wp-smiley { + margin-top: 0; + margin-bottom: 0; + padding: 0; + border: none; +} + +/* Make sure embeds and iframes fit their containers. */ +embed, +iframe, +object { + max-width: 100%; +} + +/*-------------------------------------------------------------- +## 16.1 - Captions +--------------------------------------------------------------*/ +.wp-caption { + margin-bottom: 1.5em; + max-width: 100%; + font-size: 13px; + font-size: 0.8125rem; +} + +.wp-caption img[class*="wp-image-"] { + display: block; + margin: 0 auto; +} + +.wp-caption-text { + text-align: center; +} + +.wp-caption .wp-caption-text { + margin: 0.8075em 0; +} + +/*-------------------------------------------------------------- +## 16.2 - Galleries +--------------------------------------------------------------*/ +.gallery { + margin-bottom: 1em; +} + +.gallery-item { + display: inline-block; + box-sizing: border-box; + margin: 0; + padding: 0 1em 0.75em 0; + width: 100%; + vertical-align: top; + text-align: center; +} + +.gallery-columns-2 .gallery-item { + max-width: 50%; +} + +.gallery-columns-3 .gallery-item { + max-width: 33.33%; +} + +.gallery-columns-4 .gallery-item { + max-width: 25%; +} + +.gallery-columns-5 .gallery-item { + max-width: 20%; +} + +.gallery-columns-6 .gallery-item { + max-width: 16.66%; +} + +.gallery-columns-7 .gallery-item { + max-width: 14.28%; +} + +.gallery-columns-8 .gallery-item { + max-width: 12.5%; +} + +.gallery-columns-9 .gallery-item { + max-width: 11.11%; +} + +.gallery-caption { + display: block; + font-size: 13px; + font-size: 0.8125rem; + margin-bottom: 0.75em; +} + +/*-------------------------------------------------------------- +# - Footer +--------------------------------------------------------------*/ +.footer-wrap { + background: #4d2600; +} + +.site-footer { + color: rgba(255, 255, 255, 0.6); + font-size: 15px; + font-size: 0.9375rem; +} + +.site-footer .site-info { + float: left; + padding: 2.5em 0; +} + +.site-footer a:link, +.site-footer a:visited { + border-bottom: 1px dotted rgba(255, 255, 255, 0.6); + color: #fff; +} + +.site-footer a:hover, +.site-footer a:focus, +.site-footer a:active { + color: rgba(255, 255, 255, 0.6); +} + +/*-------------------------------------------------------------- +# - Plugins +--------------------------------------------------------------*/ + +/* Breadcrumbs */ +.breadcrumbs { + margin: 0; + padding: 0.5em 0; + background: #fff; + box-shadow: 0 2px 2px #aaa; + -ms-word-wrap: break-word; + word-wrap: break-word; +} + +.breadcrumbs-container { + color: #222; + font-size: 14px; + font-size: 0.875rem; +} + +.breadcrumbs .trail-browse, +.breadcrumbs .trail-items, +.breadcrumbs .trail-items li { + display: inline; + margin: 0; + padding: 0; +} + +.breadcrumbs .trail-browse { + margin-right: 0.5em; + font-weight: normal; + font-size: 14px; + font-size: 0.875rem; +} + +.breadcrumbs .trail-items { + list-style: none; +} + +.breadcrumbs .trail-items li::after { + padding: 0 0.5em; + content: "\00bb"; /* Raquo */ +} + +.trail-separator-slash .trail-items li::after { + content: "\002F"; +} + +.trail-separator-dash .trail-items li::after { + content: "\2013"; +} + +.trail-separator-bull .trail-items li::after { + content: "\2022"; +} + +.trail-separator-arrow-bracket .trail-items li::after { + content: "\003e"; +} + +.trail-separator-raquo .trail-items li::after { + content: "\00bb"; +} + +.trail-separator-single-arrow .trail-items li::after { + content: "\2192"; +} + +.trail-separator-double-arrow .trail-items li::after { + content: "\21D2"; +} + +.breadcrumbs .trail-items li:last-of-type::after { + display: none; +} + +:root { + --tz-column-gap: 1.5em; +} + +.tz-magazine-block .tz-magazine-post { + margin: 0 0 1.5em 0; + padding: 0; + border: none; + background: none; + box-shadow: none; +} + +.tz-magazine-block .tz-entry-title { + font-size: 22px; + font-size: 1.375rem; +} + +.tz-magazine-block .tz-magazine-grid-columns-3 .tz-entry-title { + font-size: 17px; + font-size: 1.0625rem; +} + +.tz-magazine-block .tz-magazine-grid-columns-4 .tz-entry-title, +.tz-magazine-block .tz-magazine-thumbnail-list .tz-entry-title { + font-size: 16px; + font-size: 1rem; +} + +.tz-magazine-block .tz-entry-meta { + margin: 0.1em 0; + font-size: 14px; + font-size: 0.875rem; +} + +.tz-magazine-block .tz-meta-field a { + text-decoration: none; +} + +.tz-magazine-block .tz-entry-content { + font-size: 16px; + font-size: 1rem; +} + +.tz-magazine-block .tz-more-link { + text-decoration: none; +} + +/*-------------------------------------------------------------- +# - Media Queries for Typography +--------------------------------------------------------------*/ +@media only screen and (max-width: 70em) { + .post-layout-columns .post-wrapper .post-column article .entry-title { + font-size: 20px; + font-size: 1.25rem; + } +} + +@media only screen and (max-width: 60em) { + .archive-title, + .page-title, + .entry-title { + font-size: 26px; + font-size: 1.625rem; + } + + .post-layout-columns .post-wrapper .post-column article .entry-title { + font-size: 22px; + font-size: 1.375rem; + } +} + +@media only screen and (max-width: 50em) { + .archive-title, + .page-title, + .entry-title { + font-size: 24px; + font-size: 1.5rem; + } + + .post-layout-columns .post-wrapper .post-column article .entry-title { + font-size: 20px; + font-size: 1.25rem; + } +} + +@media only screen and (max-width: 40em) { + .archive-title, + .page-title, + .entry-title, + .post-layout-columns .post-wrapper .post-column article .entry-title { + font-size: 22px; + font-size: 1.375rem; + } + + .entry-content { + font-size: 16px; + font-size: 1rem; + } +} + +@media only screen and (max-width: 30em) { + .site-branding .site-title { + font-size: 32px; + font-size: 2rem; + } + + .archive-title, + .page-title, + .entry-title, + .post-layout-columns .post-wrapper .post-column article .entry-title { + font-size: 20px; + font-size: 1.25rem; + } +} + +@media only screen and (max-width: 20em) { + .site-branding .site-title { + font-size: 28px; + font-size: 1.75rem; + } + + .archive-title, + .page-title, + .entry-title, + .post-layout-columns .post-wrapper .post-column article .entry-title { + margin: 0 0 0.5em; + font-size: 18px; + font-size: 1.125rem; + } +} + +/*-------------------------------------------------------------- +# - Media Queries for Layout +--------------------------------------------------------------*/ +@media only screen and (max-width: 80em) { + .container { + padding: 0 1.5rem; + } + + .site-content { + padding-top: 1.5rem; + } + + .content-area { + padding-right: 1.5rem; + } + + .widget, + .page-header, + .type-post, + .type-page, + .type-attachment, + .pagination, + .comments-area, + .site-main > article:not(.type-post):not(.type-page):not(.type-attachment), + .post-wrapper > .post-column > article:not(.type-post):not(.type-page):not(.type-attachment) { + margin-bottom: 1.5em; + } + + .post-layout-columns .post-wrapper { + margin-right: -1.5em; + } + + .post-layout-columns .post-wrapper .post-column { + padding-right: 1.5em; + } +} + +@media only screen and (max-width: 70em) { + .content-area { + width: 70%; + } + + .sidebar { + width: 30%; + } +} + +@media only screen and (max-width: 60em) { + .content-area, + .site-content .content-fullwidth { + float: none; + padding: 0; + width: 100%; + } + + .sidebar { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + float: none; + margin-right: -1.5em; + padding: 0; + width: auto; + } + + .sidebar .widget-wrap { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + float: right; + box-sizing: border-box; + padding-right: 1.5em; + width: 50%; + } + + .sidebar .widget-wrap .widget { + width: 100%; + } + + .sidebar .widget-wrap:nth-child(2n + 1) { + clear: left; + } + + .site-branding { + float: none; + margin: 0; + text-align: center; + } + + .site-branding .custom-logo { + float: none; + } + + .header-widgets { + display: block; + text-align: center; + } + + .header-widget { + display: inline-block; + float: none; + margin: 1em 0 0; + max-width: 100%; + vertical-align: top; + } + + .header-widget .search-form { + max-width: 300px; + } + + .post-layout-three-columns .post-wrapper .post-column { + width: 1%; + } + + /* Footer */ + .site-footer .site-info { + float: none; + text-align: center; + } +} + +@media only screen and (max-width: 40em) { + .post-layout-columns .post-wrapper { + display: block; + margin-right: 0; + } + + .post-layout-columns .post-wrapper .post-column { + display: block; + float: none; + padding-right: 0; + } + + .post-layout-two-columns .post-wrapper .post-column, + .post-layout-three-columns .post-wrapper .post-column { + width: 100%; + } + + /* Sidebar */ + .sidebar { + margin-right: 0; + } + + .sidebar .widget-wrap { + float: none; + padding-right: 0; + width: 100%; + } +} + +@media only screen and (max-width: 20em) { + .entry-meta .meta-date, + .entry-meta .meta-author, + .entry-meta .meta-category, + .entry-meta .meta-comments { + display: block; + } +} + +/*-------------------------------------------------------------- +# - Media Queries for Navigation +--------------------------------------------------------------*/ +@media only screen and (min-width: 60em) { + .primary-menu-toggle, + .main-navigation .dropdown-toggle { + display: none; + } + + .main-navigation ul, + .main-navigation ul ul { + display: block; + } + + .primary-navigation { + display: flex; + margin-left: auto; + width: auto; + align-items: center; + justify-content: center; + align-content: center; + } + + #masthead .main-navigation > ul.menu { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + margin: 0; + border-bottom: none; + } + + .main-navigation > ul { + padding: 0; + border: none; + } + + .main-navigation > ul > li > a { + padding: 0.8em 1.1em; + border: none; + } + + /* Dropdown Menus */ + .main-navigation ul ul { + position: absolute; + left: -999em; + top: 100%; + z-index: 99999; + border-top: 5px solid #20745D; + background: #20745E; + } + + .main-navigation ul li:hover > ul, + .main-navigation ul li.focus > ul { + right: auto; + left: 0; + } + + .main-navigation ul ul li a { + width: 16rem; + } + + .main-navigation ul ul ul { + left: -999em; + margin-top: -5px; + top: 0; + border-left: 1px dotted rgba(255, 255, 255, 0.2); + } + + .main-navigation ul ul li:hover > ul, + .main-navigation ul ul li.focus > ul { + right: auto; + left: 100%; + } + + .main-navigation ul ul li a, + .main-navigation ul ul ul li a, + .main-navigation ul ul ul ul li a { + padding: 1em; + } + + /* Dropdown Icons */ + .main-navigation .menu-item-has-children > a > .icon { + position: relative; + display: inline-block; + left: 0.5rem; + top: 0.1rem; + width: 14px; + height: 14px; + fill: #fff; + transition: fill 0.15s ease; + } + + .main-navigation ul ul .menu-item-has-children > a > .icon { + position: absolute; + left: auto; + right: 1em; + top: 50%; + margin-top: -0.5rem; + -webkit-transform: rotate(-90deg); + -ms-transform: rotate(-90deg); + transform: rotate(-90deg); + } +} + +/*-------------------------------------------------------------- +# - Media Queries for Magazine widgets +--------------------------------------------------------------*/ +@media only screen and (max-width: 70em) { + /* Magazine Post Widgets */ + .widget-magazine-posts .large-post .entry-title { + font-size: 20px; + font-size: 1.25rem; + } + + .widget-magazine-posts .medium-post .entry-title { + font-size: 16px; + font-size: 1rem; + } + + .widget-magazine-posts .small-post .entry-title { + font-size: 15px; + font-size: 0.9375rem; + } + + .widget-magazine-posts .magazine-horizontal-box .large-post .more-link { + display: none; + } +} + +@media only screen and (max-width: 65em) { + .widget-magazine-posts .magazine-horizontal-box .large-post .entry-content { + display: none; + } +} + +@media only screen and (max-width: 60em) { + /* Magazine Post Widgets */ + .widget-magazine-posts .magazine-horizontal-box .large-post .entry-content, + .widget-magazine-posts .magazine-horizontal-box .large-post .more-link { + display: inline-block; + } + + .widget-magazine-posts .large-post .entry-title { + font-size: 22px; + font-size: 1.375rem; + } + + .widget-magazine-posts .medium-post .entry-title { + font-size: 17px; + font-size: 1.0625rem; + } + + .widget-magazine-posts .small-post .entry-title { + font-size: 16px; + font-size: 1rem; + } +} + +@media only screen and (max-width: 50em) { + /* Magazine Post Widgets */ + .widget-magazine-posts .large-post .entry-title { + font-size: 20px; + font-size: 1.25rem; + } + + .widget-magazine-posts .medium-post .entry-title { + font-size: 16px; + font-size: 1rem; + } + + .widget-magazine-posts .small-post .entry-title { + font-size: 15px; + font-size: 0.9375rem; + } + + .widget-magazine-posts .magazine-horizontal-box .large-post .more-link { + display: none; + } +} + +@media only screen and (max-width: 45em) { + .widget-magazine-posts .medium-post .entry-title { + font-size: 15px; + font-size: 0.9375rem; + } + + .widget-magazine-posts .magazine-horizontal-box .large-post .entry-content { + display: none; + } +} + +@media only screen and (max-width: 40em) { + /* Magazine Post Widgets */ + .widget-magazine-posts .magazine-grid-two-columns { + margin-right: 0; + } + + .widget-magazine-posts .magazine-grid .large-post, + .widget-magazine-posts .magazine-horizontal-box .large-post .wp-post-image, + .widget-magazine-posts .magazine-vertical-box .large-post, + .widget-magazine-posts-columns .magazine-posts-column-left { + float: none; + padding: 0; + width: 100%; + } + + .widget-magazine-posts .magazine-vertical-box .small-posts, + .widget-magazine-posts-columns .magazine-posts-column-right { + margin-left: 0; + padding-top: 1em; + padding-left: 0; + width: 100%; + } + + .widget-magazine-posts .large-post .wp-post-image { + float: left; + margin: 0 1.5em 0 0; + max-width: 50%; + } + + .widget-magazine-posts .magazine-horizontal-box .large-post .post-content { + float: right; + padding-left: 1.5em; + width: 50%; + } + + .widget-magazine-posts .magazine-grid .large-post { + clear: left; + } + + .widget-magazine-posts .magazine-grid .large-post .wp-post-image { + margin-bottom: 1em; + } + + .widget-magazine-posts .large-post .entry-content { + display: none; + } + + .widget-magazine-posts .large-post .entry-title { + font-size: 18px; + font-size: 1.125rem; + } +} + +@media only screen and (max-width: 35em) { + .widget-magazine-posts .magazine-grid-three-columns { + margin-right: 0; + } + + .widget-magazine-posts .medium-post { + float: none; + padding-right: 0; + width: 100%; + } + + .widget-magazine-posts .medium-post .wp-post-image { + float: left; + margin: 0 1em 0 0; + max-width: 120px; + } +} + +@media only screen and (max-width: 30em) { + /* Magazine Homepage: Category Post Widgets */ + .widget-magazine-posts .medium-post .wp-post-image, + .widget-magazine-posts .small-post .wp-post-image { + max-width: 30%; + } + + .widget-magazine-posts .large-post .wp-post-image, + .widget-magazine-posts .magazine-grid .large-post .wp-post-image { + float: none; + margin: 0 0 0.5em 0; + max-width: 100%; + } + + .widget-magazine-posts .magazine-horizontal-box .large-post .post-content { + float: none; + padding: 0; + width: 100%; + } + + .widget-magazine-posts .large-post .entry-title { + font-size: 20px; + font-size: 1.25rem; + } + + .widget-magazine-posts .large-post .entry-content, + .widget-magazine-posts .large-post .entry-content .more-link, + .widget-magazine-posts .magazine-horizontal-box .large-post .entry-content, + .widget-magazine-posts .magazine-horizontal-box .large-post .entry-content .more-link { + display: inline-block; + } +} + +@media only screen and (max-width: 20em) { + .widget-magazine-posts .medium-post .entry-title, + .widget-magazine-posts .small-post .entry-title { + vertical-align: top; + font-size: 13px; + font-size: 0.8125rem; + } + + .widget-magazine-posts .medium-post .entry-meta, + .widget-magazine-posts .small-post .entry-meta { + display: none; + } +} + +/*-------------------------------------------------------------- +# - Media Queries for Media +--------------------------------------------------------------*/ +@media only screen and (max-width: 50em) { + /* Gallery */ + .gallery-item { + padding: 0 0.75em 0.5em 0; + } + + .gallery-columns-6 .gallery-item, + .gallery-columns-7 .gallery-item, + .gallery-columns-8 .gallery-item, + .gallery-columns-9 .gallery-item { + max-width: 25%; + } +} + + +@media only screen and (max-width: 30em) { + .alignright, + .alignleft { + float: none; +/* margin: 1em 0;*/ + } + + /* Gallery */ + .gallery-columns-4 .gallery-item, + .gallery-columns-5 .gallery-item, + .gallery-columns-6 .gallery-item, + .gallery-columns-7 .gallery-item, + .gallery-columns-8 .gallery-item, + .gallery-columns-9 .gallery-item { + max-width: 50%; + } +} + +/*-------------------------------------------------------------- +# - Theme Options +--------------------------------------------------------------*/ + +/* Sidebar Left Layout */ +.sidebar-left .content-area { + float: right; + padding-right: 0; + padding-left: 2em; +} + +.sidebar-left .sidebar { + float: left; +} + +@media only screen and (max-width: 80em) { + .sidebar-left .content-area { + padding-right: 0; + padding-left: 1.5em; + } +} + +@media only screen and (max-width: 60em) { + .sidebar-left .content-area { + padding: 0; + } +} + +.sidebar-left.post-layout-three-columns .content-archive { + float: none; + padding: 0; + width: 100%; +} + +/* Customizer Preview */ +.magazine-widgets-placeholder { + position: relative; + padding: 1em; +} + +.magazine-widgets-placeholder .magazine-widgets-placeholder-title { + display: block; + font-size: 14px; + font-size: 0.875rem; + font-weight: bold; + text-transform: uppercase; + margin: 0; + padding: 1em 1em 1em 55px; + color: #131516; + border: 2px dashed #131516; +} + +/* Add some space around the visual edit shortcut buttons. */ +.magazine-widgets-placeholder .customize-partial-edit-shortcut button { + left: 15px; + top: 13px; +} + +/* Login page logo */ +div#login h1 a { + background: none,url(/wp-content/uploads/2020/12/grip-logo-orange-transparency-150x150.png) bottom center no-repeat; + width: inherit; + padding: 40px; +} + +/* /wp-content/plugins/svg-support/css/svgs-attachment.css?ver=5.6 */ + +.attachment svg,.widget_media_image svg{ + max-width:100%;height:auto +} + +/* /wp-content/themes/tortuga/assets/css/custom-fonts.css?ver=20180413' */ + +/* + * Embed Theme Fonts + * + * Font Face code generated with the great Google Webfonts Helper by Mario Ranftl + * https://github.com/majodev/google-webfonts-helper/ + * + * @package Tortuga + */ + +/* OpenDyslexic Normal */ +@font-face { + font-family: 'OpenDyslexic'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local('OpenDyslexic Regular'), local('OpenDyslexic-Regular'), + url('/fonts/OpenDyslexic-Regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('/fonts/OpenDyslexic-Regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* OpenDyslexic Italic */ +@font-face { + font-family: 'OpenDyslexic'; + font-style: italic; + font-weight: 400; + font-display: swap; + src: local('OpenDyslexic Italic'), local('OpenDyslexic-Italic'), + url('/fonts/OpenDyslexic-Italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('/fonts/OpenDyslexic-Italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* OpenDyslexic Bold */ +@font-face { + font-family: 'OpenDyslexic'; + font-style: normal; + font-weight: 700; + font-display: swap; + src: local('OpenDyslexic Bold'), local('OpenDyslexic-Bold'), + url('/fonts/OpenDyslexic-Bold.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('/fonts/OpenDyslexic-Bold.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + + /* OpenDyslexic Bold Italic */ +@font-face { + font-family: 'OpenDyslexic'; + font-style: italic; + font-weight: 700; + font-display: swap; + src: local('OpenDyslexic Bold Italic'), local('OpenDyslexic-BoldItalic'), + url('/fonts/OpenDyslexic-Bold-Italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('/fonts/OpenDyslexic-Bold-Italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* open-sans-regular - latin-ext_latin */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local('Open Sans Regular'), local('OpenSans-Regular'), + url('../tortuga/assets/fonts/open-sans-v15-latin-ext_latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('../tortuga/assets/fonts/open-sans-v15-latin-ext_latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* open-sans-italic - latin-ext_latin */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + font-display: swap; + src: local('Open Sans Italic'), local('OpenSans-Italic'), + url('../tortuga/assets/fonts/open-sans-v15-latin-ext_latin-italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('../tortuga/assets/fonts/open-sans-v15-latin-ext_latin-italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* open-sans-700 - latin-ext_latin */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + font-display: swap; + src: local('Open Sans Bold'), local('OpenSans-Bold'), + url('../tortuga/assets/fonts/open-sans-v15-latin-ext_latin-700.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('../tortuga/assets/fonts/open-sans-v15-latin-ext_latin-700.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + + /* open-sans-700italic - latin-ext_latin */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 700; + font-display: swap; + src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), + url('../tortuga/assets/fonts/open-sans-v15-latin-ext_latin-700italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('../tortuga/assets/fonts/open-sans-v15-latin-ext_latin-700italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* titillium-web-regular - latin-ext_latin */ +@font-face { + font-family: 'Titillium Web'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local('Titillium Web Regular'), local('TitilliumWeb-Regular'), + url('../tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('../tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* titillium-web-italic - latin-ext_latin */ +@font-face { + font-family: 'Titillium Web'; + font-style: italic; + font-weight: 400; + font-display: swap; + src: local('Titillium Web Italic'), local('TitilliumWeb-Italic'), + url('../tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('../tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* titillium-web-700 - latin-ext_latin */ +@font-face { + font-family: 'Titillium Web'; + font-style: normal; + font-weight: 700; + font-display: swap; + src: local('Titillium Web Bold'), local('TitilliumWeb-Bold'), + url('../tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-700.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('../tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-700.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* titillium-web-700italic - latin-ext_latin */ +@font-face { + font-family: 'Titillium Web'; + font-style: italic; + font-weight: 700; + font-display: swap; + src: local('Titillium Web Bold Italic'), local('TitilliumWeb-BoldItalic'), + url('../tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-700italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('../tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-700italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* /wp-content/themes/tortuga/assets/css/safari-flexbox-fixes.css?ver=20200420 */ + +/* + * Safari Flexbox CSS Fixes + * + * @package Tortuga + */ + +/* Fix Flexbox issues for Safari 6.1-10.0 */ +@media screen and (min-color-index:0) and(-webkit-min-device-pixel-ratio:0) { + @media { + .post-layout-columns .post-wrapper .post-column { + margin-right: -1px; + } + } +} + +/* Fix Flexbox issues for Safari 10.1+ */ +@media not all and (min-resolution:.001dpcm) { + @media { + .post-layout-columns .post-wrapper .post-column { + margin-right: -1px; + } + } +} + +/* /wp-content/themes/tortuga/assets/genericons/genericons.css?ver=3.4.1 */ + +/** + + Genericons + +*/ + + +/* IE8 and below use EOT and allow cross-site embedding. + IE9 uses WOFF which is base64 encoded to allow cross-site embedding. + So unfortunately, IE9 will throw a console error, but it'll still work. + When the font is base64 encoded, cross-site embedding works in Firefox */ +@font-face { + font-family: "Genericons"; + src: url("./../tortuga/assets/genericons/Genericons.eot"); + src: url("./../tortuga/assets/genericons/Genericons.eot?") format("embedded-opentype"); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: "Genericons"; + src: url("data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAADakAA0AAAAAVqwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAA2iAAAABoAAAAcdeu6KE9TLzIAAAGgAAAARQAAAGBkLHXFY21hcAAAAogAAACWAAABsqlys6FjdnQgAAADIAAAAAQAAAAEAEQFEWdhc3AAADaAAAAACAAAAAj//wADZ2x5ZgAABFQAAC7AAABIkKrsSc5oZWFkAAABMAAAAC8AAAA2C2BCV2hoZWEAAAFgAAAAHQAAACQQuAgGaG10eAAAAegAAACfAAABOFjwU3Jsb2NhAAADJAAAATAAAAEwy4vdrm1heHAAAAGAAAAAIAAAACAA6QEZbmFtZQAAMxQAAAE5AAACN1KGf59wb3N0AAA0UAAAAjAAAAXo9iKXv3jaY2BkYGAAYqUtWvLx/DZfGbg5GEDgkmLVWhj9/ycDAwcbWJyDgQlEAQABJgkgAHjaY2BkYOBgAIIdHAz/fwLZbAyMDKiAFQBE7gLWAAAAAAEAAACXAOgAEAAAAAAAAgAAAAEAAQAAAEAALgAAAAB42mNgYf/MOIGBlYGB1Zh1JgMDoxyEZr7OkMYkxMDAxMDKzAADjAIMCBCQ5prC0MCg8FWcA8TdwQFVg6REgYERAPvTCMQAAAB42i1PsRXCUAg8SAprl7FN4QZqb2WZGRjAIVLrHj4be4ews7OJHAd54cMBd+Af7JHmt3RPYAOHAYFweFhmYE4jlj+uVb8nshCzd/qVeNUCLysG8lgwrojfSW/pcTK6o7rWX82En6HJwIEv+wbi28IwpndxRu/JaJGStHRDq5EB+OKCNumZLlSVl2TnOFVtl9nR5t7woR0QzVT+D7cKLeIAeNpjYGBgZoBgGQZGBhBYA+QxgvksDBOAtAIQsoDoj5yfOD9JflL7zPGF84vkF80vll88v0R+yfxS9lX8/3+wCoZPDJ8EPil8ZvjC8EXgi8IXgy8OXwK+JHwp+Mrw////x/wsfHx8HHxMvJo8Rjw6PGo8CjxSPCI8fDwc3PVQ2/ECRjYGuDJGJiDBhK4A4pXhDABtHClYAAAARAURAAAALAAsACwALABaAIQAzADyAQABHAFGAZQBzgIIArIDTAOkA+AEEgTCBRYFYgW+BjAGwgbkByQHSAeCB+AI2Ao4CowLGgvQDBwM6g08DX4Nug4kDkYOYg6ADsoO7A8yD4gP8hAwEGYQpBDuEUgRshHUEfYSQBJeEnoSlhLEEtwTIBNYE6oT6hQaFC4UShSQFJ4UtBTyFSAVjBW4FegV+hYUFiwWQBZWFmQWchaIFuYXFhdUF4gXyhgEGCwYThh8GNYZEhlCGVgZZhl8GZIZoBnQGhIaShp8GtIa6Br+GzAbVBt+G8Ib/Bw6HGgciBy8HOwdHh1WHXAdmB3eHvYfIB8uHzofSB9WH6of4CA4IMghACFCIcQh4CIGIjoiSCJ8IpYiyCLmIxAjWiPwJCQkSHja1Xx5YFTVvf/53nUm++zJJJnMkpkJJJkss5GFMIQ9w04IS0BZRSJLMIIo1l4XFETQFkVFBKwVrbuWpRaXPOtalZaCPKu1D2yf28NX21qfQubk9z3nzoSAS//+Mbn3nnvuuWc/n+/n+z3fCxHIaEKEJfJMIhKVhJ4GUtP8jCqRz+ufVuQ/NT8jChgkT4ssWmbRz6gK9DU/Ayw+bPKY/B6TZ7TgpuVwN71Unnnm0dHS24QQRSACUYis8XyzST6xEAch4LF5ZJsnKkc9NsDDj2ETXgUikT4iaClNJEBSGoZIP74qa+l//YRfKB5EAEyj4g/ztWBZbslcIEjucqHATOpjkYBXsYo18DNYeOQI3UMvonuOHIHXj+/YcXyHSs7FLGQp+o7sYA8IFq+BpmqKhtk6SDEZinWVWfMsHlLfIkRCgjdPsLpAtMlRUu8CmzVP8HlDEInJmkC+wcbihT54cN/6cePW79Mv/f1E+MUT2zvCM68cOWt7Rwc2pk8TNQ3IWW0gEbuI3yxI7KW9HdtnjbxyZrhj+xPbWX0EYhjcf9h3Jg9gldjBfhLm1af1ERF7BTAEmoxngQDeU35mB/YPsDiFtU0gxChgX2tn8S6FP3zG38O+zMWEVkU1yaYQRCMxt13WblvTT9bcdgpaTsnahlcqUp9owt0Vr2zYc+oUHwN8S2FjwMYV62PNA5+pPhaFc0EP4JhuPr2la4eQCVCsNRvnLac3A9nRNShIBFZPXpciEmHjareZsEbRWNTEBhVvHDasmyniwP7HJ+4AhlsgbmOP7PUsWVA8DFmHuzoSa3avSXR09XZ0HaZfHa7raOARKjm8kWoLdwfuamwHbcqaNVOo1t54V2D3QtA2nsQL1TYePrwRtMTaWUWYhvI0gGlYz5FeldWtgPiwvfW8bpVgAk/cwxqtR/hwhHxeVq9YWNG6duzo0miCHtBgy55TlN/jbYIHFGwyi6IJ6NVO7RG0c7c7ugBDRITMuMlYqovNAFYeuNg4BWPRSBCDBRhsEaKRQJCl5mOvSfmxpqbY3GQSCmYvXjy7s6bVP2WcjI/P4iEUxG7ddWt0brKrC5/P+Yz2fTans2bNjWMvPTwOi8B2Vhtw5pEr+cpyCWabVVAkVQngpGDFtChYcIsQCIYgT1ADQUUNifmQB7g4HIrN6pIdiponhCAYkoJDMd7ucEkOlxK32q02qxIMlAewtuYWQVwLdsg6+fyNbcufpfRunw+CruicxZMm1JYsV4zGfIuUV9+8OH7VzTdfFV80IpSVVZBvMErLS2rHT140JxrJtYfGjRjrFIyl3liplFNkNDlFY6nTmwuKwx0fu6gZfL67aOrZ5W03Pn/SQNiZfrXlIfr62RfrVXeh9JvpoxY4FUt5/eRFm2bsvTy/YvzFdSDK5jq/F8DrrzMpglAxtSFekt2zZ/rmRZPr/WYl1JmVJxdEq6VcX3GhoGY7zaAUuoZ5pNwhrqF5WabyKXVZhW4l/MJZaHhoC28cdiIDKkJ4nxqIiZQittSTBJlKiL8+LogKUe3+mDleLrvAjLhidsRIPBDMAda9LsERkxwCsETlccHiVXx2S4sUD1SBWyIIewRxjzDgk8iBw54n/0w3db0rjt/1ViE9TY/nNXaeue+KFT+Cxz4uSNCP6Bp5+biD/9dsLw0qj8DEq51nG1+if695Cb68Zevjbs19yW+VvZO2LB9yLT1Er4JdsAEsP/85/ZxupEvw+PznPweLNhWq4MY2evS13r0roL03FCq+m/5W2Jx4iP5u/dsQm1SrddTDuw0Xd7lKw+05HqUYSuGfM+nhE/bxIXBCrGAf3Sc0ultay6/9qXZB5lggL5R1FyAeVyEef0Aa8EZR7Qi4kuRz++3helzyOL0wgJfhOL8YXsXtkgNnaIsQrrc7YvE8UGOqllwpVM/Vnvo9pdvoEdpfVTXzgZ+MuPJ5n99dV/vjhyfPTs6uvwVu+TCrcfGm5OQt4R+tsLY3rFJquycX25Yff/vwfT0jH5QDY+vEbavV3KI3b5QrxfqfXbS445E3s4dUtm1a3Dg8XpRILPfm6vUlKD9UjQQH0MGHKG3xDEcZEXbEAz4UIKUIiyg0zwMI+hHk5dCPKlv3yZOWX/TT2VWUpqrYAxUR4SxB6HwNpN6c5jj8Iyt28drRp2lfqmFHl4xPOLZjufLHWK6b4YPIBAMrI9IiYU+Ugejl5YrSbpiQT1+lvX/+s6N6/EXXtsW7nE51/pKKiNMofU2P9h0SJ0ANCJEFs8bHShVRpB+Z/NVeUTASRJ9M2yyIzB6yhKzi2GA3s0HxeXFFF5hjgDMXFKjHuZsNdgtYYvEWMRphQGBA6AjXOwLlPq+kqPXh+tgIiNkVVVHBIiKOxBz2c3F+HGpVjJmjEbENVsDEL7aN7Nn38idXH6T7v9i27Qv6pzNv0x+PFQO3XC8JX/+j+y/gmypIBXkW1VFoBYdslvMkVZjcCMZV9NN7b6H9R8YXF/lX+Lw2S561qhb8T13bbs23WjdOCVzm82GkrVLwycO/OvSeqmHu+w9e/cnL+3pGbvsCJvLSU3mn6YYlUul9fTUhWREeSo30SHv7dkOOklNXNzZcGJoT9Qp+gzu7JL/Qlt3QAUu6Ox9YJQsilHlFWei7SzDBbFXwuiErE6lWVN68M9XQBT3vH2FzXSC3wj9Rlm4ldWQ4G0W73q8hITOh1ZARh5FBLM5+Me7xh20+my/qi4ajYeE9IZAbGLPkmh3T1723++JF9797+do3WncKVqO9oMjucpWblz66ZMmjS0d2j48VSXS/uE9nVJIWDE/fcc2SMYGLd7+3bu37uy+ePPEeyFVzDdmqURIXP/rbRxeXx8Y0Fb3Nk2M9RZ13Kc8jJzFjXTkjCTJxx4YX4R/FPkZF2FQHFYWyxxz02FoUfCbYhPn0ILQ9KExbumxGvL0KqjrkAnpoWkfluKG52fSQJMGEbJvbUxNuLZ++eVkDEPG/bl40oW1h9aS62kmhszsF8/Ir/WF3cSz1n+L187eaSnzFxZbs+GWPr2ZcKT0/Gct0k+ZBKzC91Bg/saCYDoEPiYTVjhG8moIa9dgLbCrWOs672mbSVyVbeCiGHfSbG0ZPg6mto6ZPGyk1PbSpftowbwH9GgAMhixvg3fMyMwy1ZfkGSIW9X0sbpzS2DxpclPjlL4N8NqTB4sqg4XdHtpz4CAcrrQ5h5Re3E5nY2c+isJhGsqFqazGLkkf9kBQwJURDMQtbALEWKWsrD/ZGsFVEULemYdJkQSpeewvyOeJLNWt++MT2xZEqmdctePgksVPeicUeOffqZb+TMqzb71kxuxAc57j6iVrn1005obXfzT/0ZtXTQjOMKuqaBVUn33munj5xBV3/fIvBhJftGnvgfkbPnxx18rm+Qn6wbAN22MPXy08ZfQsj9x6+LLp4e3/0bD49l9B3cFLn76uLTSt+6a7p965yOYszJmSVWgy+u54rnvS7nu3rp9Vr+N4RvYtzvCJAiFPwGYGY3ELn8/AGiXqjbI77AgbEI8Fgmk0x6nD2CRS7TinOWxuYboywE5yBMiFXCIt5+/YliwZX7J12lW/u31a0+W73u5Zd3T3tVOGdC0zl8iCSZDlvNHjtN41Sx/oGjZ1x0XRdn9Odp1r3KjY3GiBwbjG4pAP0NO7BjMH+hn9iuU/dP1icEaTlx0G8c7Ox+9YnYhfdM3td7bdcmyoIc9iSGRZbaYpVy185uZpzctvm7n96zujndGaXVcObZ01+upk5TSLhfpnLNo8BRyw7sgAQRDIXmGBukDei4srn/PeAuS2BeXpq2yF2V9+SR/+MnVFOiDvZecv03d41eUlUW9Xc4gXbyQR+bkP0TuIkwWpYhx/FrPDjCITQxhlVjaAtSAHlaGfpu5bsco7bZ71qvaN1z0152hdxNo8YdiabkPBpsSYG1VioA/SFB1Oh0AZ3HYtlLWvuKLnboOV/p7+agr9+1NPzbu7FB5nbcjoT/mIDd9af0ZBIag27OnjZ+CanoKsl/J7Ac99nL0SgHeJplTgWvbqWgUqEw47kw9xEwoHnDaMeEZNvihvVFwaBb+gs0wF1c0TN93cM3/+ig0XXzSqNfJqVzIZqjapGm2iH9PIrqoqZ/ls+lHMbi8ra2i8boOwNuVLJObO2cKm52D8cJBqjsEX1J+4lQK7O1aANeKr0c05B9bNHkb2b8J5WQlepRSs9iaojw2GELGMvnSKqVBIzf/XvPk0/ez0ZjP932RUJtFkMqqlT+ejCCWn9Lf6TolkbCMqSKg7NY1JsVekA5l3knxp9QOooPSTbeSnZAe5h9xH7icPkoeZNodNsNUq7M+q1KHOoNQpqpWdFBsDFOxOJR9A8QahtgYCwdpANKB3byAYCfIVGIhiZAS7IFobi8bqIqzPo/VxftV/I6A2DrF6B9Ta62rtYbtj4GdjRy37szqsdXYwyXEjOPyyLQ4mv+qPB1UjBGV/VFVx1Pk/Af+E9BkvqVZThSnVCiLgdBZZrADn/RNgIDGKVuEFTC68AAIM5JHOCDArcH2cujJ19mNwpV59EO6kH34sjPv000+hUpA/ph8KjQ9K/5AlWi2oAkjsHVaowIpM54D5A63OzoFjLPt0TUX+HC+AL+GLEhyTZAFkEPCWHew1ngE7H8vOptXpFop6jqwMlgzfgCn07Rd3wmz68M4X9/5pVeoFiLx47+Rdu3ZhaPbOF+//06rz56oF5dwL5GM2V5GJFaCO5uaqVQsSYVTXBJQPDrsUV9I8AjEVgXUEMEzFFKiHWTgDUxiRRmStjdQhVQuUsyj+aoyBcAgUPUI4B8whIRjggocnY1Qcc2MP2T0TSiIqi0GO1w6XiLfsjfStAPXlOINQiAVZlojhEpYZDJjjMYyPK5KCcG+2SxI5yJgfI2T0Dkb8OAc8tpueWLlyidW075r14N4wIbn6rTtmlSdC2KNGEUb+/OVlD4Brodt/KX3/dnHo0I4tV6xrn7vgyWuT2V3tl9AvV14xvCXLsHPlqv9qanEkQxs3RTsstnBBVbS0am4gEDEYzEUFlfXFzki1udghK5VlFTWh8bmohxlt9jGBwFirTTYbi70V9spOj9cvCh0bW8Mza3Js5qmXrBtWPjJsKjaaHRsebp91+0y64TRsuqRp1o43eibdsNAZG9/TTQ899BD9dFxb7qzZUP2MyXwv/fSNdde9DyGdd+rNZLQzzUDvMqxdfRn945139E8Yn9dgm739re6xm9bWY1uzBEiuaLp1Q7j62jtTWaNuGtYz1FfiTV775ALhshdbJlmbWpZfds3637g80+d3fpgMV1uDwxcsnFlcWaZm5zkc44YMbfc4PBZByHGai9v8/haTXYFhlQKUTSh1eQSo9Pnag1aP0yIZi8rcc2pHXhYy5Yy5aHU00l5tsOfVDC+Pb2ieclU0P2flA303f/3WTTeuPXrvZVb3yq3T7qJPrN/QXer8rz27YOU99/7BJQk5t7xL/7x7H/3D+9f//8R1mT73Y3W4ej25BG9cuAjy5BAqSKY8A858HnIJsTiKJ5eI+ngspPiC3kAeJgOXWAZqSMLF0iK6RIe8Wy2aMGb26CZnXlnlitVXdl86K2E2I+waTFa3P1IaWdU+xmzxjB41rACGKdbEiNmTpo+oyxLKW6Z3zpsx0mKRCsKR5NgZ48aXFBeJJmeR0XhKdTQOKc0eP2rMww899bO7N8xzqkPEnKH1M+ffsO3QojmbZ8Qtcm6uqtD/EVS7w+3yuUqzzUKRKycXCr2VeeXV4jOpjwQ5W5It1aMuGzPx+s62Km++ASFJyS+sCCerqxdMm9hYlZP9htG9fNWD9786b/LlTW4hr6QoKz2GiEFXIAYNIddh79hVbgwNMqiRUCwy5iaivseUAtlmBWapCgz+YRqmD9rTgn3gORITJpusg2SINS3zB57bMnQgpo4Mw6QbDiy5auWUiZe//yukq6ZRdZ3r75y69cq2sYteeHB7z4wqekmT1ze8qX368g6Xu9xtKYjEOxdVDvWUOIpqIj5vkXPYsBkzu7ctXzGsIR7tnL1xXsswr6el9dLJ1aFCp8NWUlYV8/pikVlXHrxnVbfYuuzyJQdumNSYN3zFrmff62mfefnGqXeu76xL5lTN6Nn+4AuL5tPftl86e3hzRbDY6bAYjeZ8zCPkLXe7W0I2e3l5dai+FqmIMzhkQtuCS0a3BgMlVrPJ46ofMbTKbvN4orWFRagDJSdNrBkRCnH+jKyIKMzuGGESHXFX1wbwrFQiS+EcJSRUgomjOO94Zp1Gwe6ptyuaPVhkZ0cymmCsgSZGXjFu7lCtt27VwgSoiACeOWMLDAbYG01KpLiu3OAJ6mdM3ZWsqK0QtIvu/3qzbKr2lLTvnD5zrz+Q1Cn927BVDas93KIVJLVkBBmPesxmrGUMq6UPWwSJAY4VYC3TWqK9nKkzCrvzxzidV+0oE1iQWwesdgmsjhgzlyjEqzCzbsRi1e0/gBKO866MXoTpLCimHHILYgXrCtQSgn7R7mD3LpBezx/qyu949nBHvmto/rDbfkL/1hoKjRwZCrXC6HmtrfNaBU9lw5DqshmpLY+C75FH6AePPkY/eOQR8KU+rKiZWVo1pFGuxoEYUb1vWCjvilfoF/QE/eKVtQWllUXrZtTNKDn03/Nks9kGDYXT69qWL2+rmVIn0jOT/vxkycz62LyYaMh3VeZ3dORXuvKHgRJqxeJbW/VzKDS8rHZIQ3B4alnXgctWHOzqOnjiYJdwb03JxOHlDUJ7qCVUnUg9Fe8srq9b+uzGKVM2/mop6n/hkb4Z66oDC43whj07Rx4/pG75HcurJ4Wa6bU5CypCsXlsfSK/Znq6RnwkjuPBjDBM7RX5loUwHDw23VzOu81hU2VPRscKRh1x/aE0ze63e2sA5t03f4w2LwZqzega+bUtW16X7kMaoc7bPX/+7nmw/D6Mlo7Os/ttIS8tm3vPnGjnj0YfPeKpqfHAx5uef3HTZdU/Ptq5a+6cnZ1/qA0dZ/FEryPbP8B5nU/KM3ybb+Lo+jrbxkF+yPZyHBB3IamOOxRkxpn9GyTW7wWSXX76Hn3P35UMwHLZ1DC6wSSr3Kx+VN/iOcrs6Kl9LAF9H/z8hR1Sqc9XKhHdrvUCcqnWgT0WByFG0WTMiduMEHUIt8Ga1Od0O6wULBTDggVWpv4u5NPtqc9hDb0dLt+d+iL1xW61lb5FD0F56lnw0V/RtyAC4+kH9CFxL/0TTIDI2W/o28t66EvQ0rOMt10ghCpzsO0uMoa3XRUFNU9iKoQKeaBrOEwcMr6F65vtb8TNyLCYcqGzMKaZcMuiBxVo+dXZjdbIHFlWrEU1rjMGWaVX5g11Z1vL8suaK4RTXtlpSa2ylcr/dFpLyz6wFouCS5RcFvr3Yp+vGEZk2wtUsmgRpbTFarVV2MyCgTYU5IqyWlkh2xxVVSV09S/tZW5zn0GRcZ4U5jnzDLtyrT5vcbDYk2PhOMX2R9h+0GDtb9BmCPnezY/0bgfHOgFnLd9TYnsdqPw5PDaPGBZ6xd5+wjRETJ7i8jylIRPW+klmLmHJCmPHOdwqZYTMRqCESyFFKBHf7GKApmAwRdg+U5Ldk8weC5+HZcSftmtm2DQza+q7f4hNeCdZTKhsmcQ6cIH8XHf3c/Qs/ZCefX716ufhjrXv3NvZee87a3fRr3buhKw/wdBO+rRKVj+vJ2LJkefji8+fXd2588RnJ3Z27qRf0dcxuUToXPqfnTAV3tPnB9aJ8L1IE957GY7arSLrVQ/rTKmL72ZqTGs+tUfS+B4m/ezUnn7siD2nCBncrmxSTKp0W53JEw3b8LAw45c+rbj+mh4vNlQ+VlhYRqFzBg9NwM5ORvu4xiniOdXrRKYcSODZqWhn2RLStLOYjCVIsbNwIOCkhD2HXkx5fl1cZChpxLrUoqasioxHxS16iZ4mqK0PowJRAnU/VFUJy1JC4RJ1xRO8DMK0KYebmya/s8bSb0AwqFij4pxQETyNVRLcDtTnDn9X5QnJGajr4H3rYpwblaQJZdwohqdhm5g+MmFPOowc1Wb6oZ7OvHtuO5vVmF+/pwGU6GnYM37Q9DVzFsh3NQWi+qY5Xx8zYaZ6tXo1tseNCAcOQB2tRYA4qAFvPt+jUyFurx+BsAt/Fsrmpk6VNzUGvTnWYcLX+4WyA/6uwIFCs7lwf+rkgQCG/cIwnspfU5pnDIWnS88dSJ3c7/cfKGptLTwglGHwoL9rYG1ynC8gJdh3KqCUZjv15W7JjOyOIM9HBEMJhdhHNGq6+9n0+oFhkLVzdd/q9Ue+PLKenQAb/LfVmSe4dHY9eze8mX64fv2AfTpdFm/pBcWRdFGoXtgtUY9NNsHfvlVmauxAngZBE1dT07fKpd+cq5VhsG2cr7cSUsFtVza2FeOJMjj6gXqIOIw4UGzpCv+mOkomIb6S+jf14vKNQKWBKO+QXKxTKaJbNdv/Z9AWNEIMqyIagXe8EZi2FUNVI8aNjgLnXYifMpyl8hL6JfKeL5dSBc4shRwYCjl+WEu3Tnrl3Zcn0lvh8kmvrFjxypQUYWauU/SlhRxbZXyTypf09CyDM3BmWU9PXyVcAT2TZ0yfTG+lW/EKL+3RXzglRDk6n1dn5ofh46uOgDcIjDWyuiOtjDNLeByCFgcE46whqEtk8N7PmSM2KK7zTYkUeWC/ckoAWMBbcucvdm2/qH3FK0lY+8fQdWfJdRpt5M268//eSG3h1YC3u257eAVvWsuaEaf2rEDIgf2eoj2nhJN0L2vTlO3e6ZPhinfhQ54DvMoauDf1Fm/4V13LeRNfWrNgJQdjEBho6b4S2P/M7IX1MwIKo15IaLSX9mqQ4CdIyBfcayxNen+R29HPz8NA+nrFhNbX29eriQl+EhPqBfcaS8PmqJaWKxbEsyjzcLFVGqJ+ziLsKutBhlWIVHJ4wPgZPveTiQ44mo49ySgg0DCB4OxPA76mg4+eQuGJEYoOIOjiX2+KqyACXjMH5w1QirxhBzGy9WrBP5CLQSW0/BD1U/8hWi5M3L9f+jE9mPoUJtL9ggPaQHCkPmXYovMFDbs2i692BN4gMxqj1Ne0PqKJuGAUBpiUGahTvdBLE+f4MeMLRu6TZAT8M3kYi0jhT8TfGQxzF5pedmJVJRLvv16lF98zkDzGdIwCW90OHIoaQfXjfMQ+6u3TaELUUo8vEGak9moLEgs0mIThBQqW3qdBL7acPetbwJ/lskdp/oS5syE2Ztx8VOQ5jPYgDCVS/E1WFegdjDc5uLY5g+a+Gp6IUO4z1aMYcwLeZEGgCnxmphyhmAWi7zm09ZMjdPfvj8I2mAYlr67qJ/Me/Jx+TA880b23G//kjLvE72HREZGsepX+lT5JLz/6BCSh6PMH5/VpPB2X7f3fADEo6ovYG07uo+JCecJ1UlyiLcgsBpZmMXgs6luVeZErZnxzunVZs8PhE76u7L68u5L+H193f4zQj8LC3LHa/LgvMbNrmPTO2AkTxp45ylcVRNmeAQ5MZp/BhtgQ1nkNQwXUXeJc3+RIhqCG6Oth0GB3sMYH1ZAgcBqleJnHFv1tkv7mpVkPbm0E1AoC0S2TmIMOHqi+JmH4S9d/MofFg2/G4i95YyWcSo8dD7U3AWoT/tjwU0IZ28h47PiSOSwCyutLaS3vPd3fivsxVWa8mPLAyzg9Liu7m7sz+bwDTkt8rXGazJ2XOIJrLLRmytRuXDcauzLXpZR2NcP2qxk2MD8lQZuypntqmmy9TJvZnUA2snUBP1HY3Mgjhbp/HIKnyrA+GjGjClHAii+wi+VccsyZSpfT5VPn7IR9Nz733I2Ys0qYNFl7DB/AXVOPrd0FWSnnc2B4jjlTMTxbwPBMPsmWEJIJH8QdMucl9KR2Uj65IEVgr9aLY4Vz1EAGuBQpwsFi48WuBvI10Q82k3GZ4pHionAQZ7CQIZhHEFd1HrMLO0w4iKwJzALi8JjKcIJxDwMTTn34y18E7ZOa0f4/PnTz6UcXrZc3DVs69i8pzfLO+KlLnljF4pRSvP8k1L1xzNP0b1X0jH3zqyDeugvsdPKlrz48Dt+3vDP215euPbKtFBR8SFNMJxGxrZLGW8OWpcb87tL1ZPjDOoG1j89EfzrFWVRP+vC9PsKd3RjSzBASBtZnKtczy9gq5/wgfQGHlN7vM6fXizCM/gu2a9QCa6UH04HuvlE4Mdgw/H33mjW718j30zLEJyLsSZ3Sry0L2VOcPvTwGpbkPG6icj7L8IW7kg1emTL3HUNVCa+QPLceEYnTsSJ3IBu8GAnLisuUdN4ZphzXmTJJ4475gqs/7f2pM2Vd/Mhc8Hi4EEK1Ecmzz8TSCPu48Bj8B2nnRuZHmRFDNKGrA/ycwMqx5zgI/A3QX6T6ZZ9OjCVOm5lE0nM9yzVK5oTKCB0j4kRlumgJ12d1cRiJNUHajsVtTNw+OWizT1UPb2xdVxV67vI9pwolwvWyHWWejYfD1Us3nNrT0srXpqaCKqf9Ye1Wxr+DbGEEA5ERbCdNRFquHEwmP207mqQN9CS8Bm1tnyaPt83e20/2yruSx/ARjKcN4GaPjuNdW2rHXiAMkIHJLpnRKPVc/4t6RWS9Qtym+Af5f+UnuKwRsPCoByQCn1PLLJjFXFTpL+THqYVaOmCWBrO4HRIX2B8UTX8H1zySWyS1EplFf8G8UGHWLGqRH++gv8B3O+BzrssnFFYPxuiYgASEiFRvCllNr8xksYDUJsHTMSxJsHRYFyMm41YCIYE/jQlsDKZ6B3wJRKwe88bEGSxyd9o+Pg8BVyhWTX+Gc5st0syzNE+QNe6STIwiq7zGSBmbAWeJoDsecx5fwG5kTfm2/ucjQZzZNShz4lwTJBl9jx3xsM03+D48SB/8vnthgEylMqE+7cLAgAN0xgP6e0K8awRuB+G2DFbnb+1iZ5CF4ZisG2T4WbeNMEMJs5718TiJObNo6dUu4qM0jvD8GX4FLsg/zASuzRcdVI4YZYownCtKYxlpmQI5K2NWwEyZqOExxfhcwQeYituv2xAydnCGM8U6FjN5Lqev4LEKCiOAIRBEfIc3iF/6cJBv+vQn/eQnn96kcODglnD9mnrzbvqvX5bSf0Ju6S8hm9FEoq97Ja3FMXxOAwBDq8Eg4IIBFJCwesz1FnDe8NZi43SHX0U5vLGqfVypDgoCVk3HLmBmGyZH8OJ2bzzsqHSlMeIc9pQPYI9ej+8rPe1JSDJ10If1/JI5HOnQ+R1lCtxfn/EqI7fgmdjWlkfl8hqBGDECFy3zLmf6JzNHpN6bKwToXIGNEMV1xy1yKMD38Qfn2bDymZgo5c4cePJFue86MKjFNP2MZbNhuUpNsdXI8gaUm/q6TY+5iY84kxBNyGrTs5nVLRCJc41F4apFIjN1+4hYX1/fd4TZo9hU0vT5fBZLi/80zjRNAdFyj7pAXUCq+M6K6ldUixpkRDFoCQTlINMf48G4HIuLcQeictwh2h1+h2rHseaT216vLmikv6tptm95Y4Sz5Y0ttqZa+rvGTwyGTxqhrrbJtuWNkdaRb9xqb6qFOhZNN3H4FU7fam+uOZdSzyA3O4E5NNfoST/RM771dcy4jGM3ucDGYEV9/rwvH4Ab+VWI+fnOaRyUC7+BkOo3n96yaYNweHwf4aHUmPHf+iAidWTL6c3jU2M2bGJX4fCGb/GH4nNypTyjVyCgstXPlrusc4eUfmEsCGGYsEkj4ezRY/XF/SaTwWx1n5srOo8y6SyRxWZEvUx0qGbceoBz8ZTsyxH965GBbxIyOK+7D4n48AwrnmTwftD+QyYtkiELm576dyB6iSkuIAa+nyCDvp/A0tLfT4jAHbwN34u5ZBDm6kbwNNalQRc7x4AAeEZfsXj+OgO6vKoixyOWv4LaFcNcjqnG84rxpH+DihPS4CoMFAm82rj0M0XzL1Gw/0UtUzy+hO1mrR+oxoXzznLhvJMym3TI1zy2MDK3C+edsExH+720V9v7rQlXz4vpSzJooWk5dl55ju/+wodx1m995ZMazFsvKOjskfP0yPPKCH93GfrONa4qB9+uZkDLfqUQjnIPqO8pH170t7ffsf/n825aUlHkLCyKjC52vmUyj5n+fXUSGhqndSdGXrR/XEFBia+k2Du0umpkg7fUaquOpH3hdZ1Xn9Xsp+K8YYYKjrknqRuHzQ0nL0jLEhpZ2hSOvESYwZ6lZcyHupk9I2MHYUzHTOz4RhgVg7AFj6DPb0HNLlzMggqjGimWeQe00/85UamlPuvgtkitYwTeybwu3I7JE6bDvO7/xPrkKtvYTgbTQFsEexnEW8CF0horv35CU/DGZ1+YcP/9E1741caK5gk4ZZeO+c1r97YMHXP33WOGttz7+ktj2Jwgl8BJdafixhWsfw3F7F8iqBbRwQzaQeGyE/Qo1Jw4Kh09cfToCag52/U1kK/lhm3IoRu2QQO8to2+Rl/bBq/RshaJtDCdjOunaTtQEdv9MQpRFLSoxX3LgTjKtTREubBJNxIpiCqsnX0oqges7lEm33UTrcxhhFnz8IRU9lwKbtMfMPp+ux6lP1wP2w+Xn/p3JWvkO8os+4EyLSj+g+oPldoHL8+lOw50/lDJOH1e7mSJGIqm56iMcgzLNRkF5rRgCqIIY/Y0k8CtngyARYJyaEfbc0v6OR7LCWYdpb18CrMPyujxHW0Tqabfp/0ldFzP4z7Vg3OVL8iLfMf752wPIuuTjCzycgdl0Weq5w4WHD0kPsnHrk4mV48dt6Il3ODzNYRbVozjMcB7SsaVxzRSdogDoUEYx/lRNrPSQBrEeYnMv9kT5Fv1wC0jDLgljS2shmHdKdLtDxcxNS/FxaPE51EfSW6Nr1lTPvfiem0wd+K2hguHlDkEurFzZE+Uf1qncEW4j583nwb76c1slxR5h3TeGGq6J6rG6SbTNwQiz8I2FBAn99f1cJRUVBt3QfF5mCmOQWglFOlBH8qkZV+uXr1w6sqFf/0NnQbk+iVz6uouXbt96YK3FG3smHuW3ZinFt20+r6nhV8NH9daWkpb6PFJU28jaTs6kTP7wz4xrHriYYsv7pFna19oFTRRwS6oXnKFikvOtM1b49wim2EQ6+eMYwmYgswRk7MLOJCWxzhxe/s5Vko6Xel7U0j0phaAm00QI/ezZv3KeIOR5HB/ZxuOIMp+i8ljYR8asNk2BEC3DKt+I6BKr+nKDWjf8DHTzS2gm5i1bzROhPFeThNjiqVnDC9shEHjLErjagYztmnny0kz+Y/zZZgjqKgjuLtlMF4j5EONMEJ1jIAyCNRAvhQcAY54cIQQCKoO/MsXWSK8RVkXR3jmCeP5QhnGYaAM8iGuloEazzcEK/HGEccMJYdaIyvMXdNRI48QkDiPEPBtScWkIuboyMdZd6GIzBPFLNnkEsjLkGhT8n1FhcMiFUEAWXbkWnL9geJRzsJch5xX6nCGC8XcGkOhrSJ/Yo9k9Ug2Q/OkZqUgJ2R3j3FdtuidJwO1bl+NSynJrk2Wx3ODxV6Lx2MszbYmY0PlvOxQgbMsz+fMcjsNhaFgnVLamD8kWIUKowEMcpYMTtc1726SsrJHubPUPIMh35rbHBTyLaPrvEaDx1BTWyY4Suoryk2CRxr6LcH9L0mxIMPum/zHp7LCRQaLTSyNueOq2ZdndfogS/VnNcdkVbD7so0VTtHuNNqz1ycFk5wlGLN8pc0em9VkMIH/ZsgxGBTVLDrkItvQfHOJN+AwmbPiVos9x1SgWixyvsliLXQ2O2srKt2uSqfRPKW2oNWUZcpxlIcWz/gJ7X+mPOeWEa3DSgqiLXK2Uc01Fxepdq9FrjMWZEuWxpGjyzplh8mpcBm6V3SrC6SMDfJbPH6Az/t+fcMNv75BFAdfpJM38Ougv7SfJLO79DJUxzlvIF9rYq84YK/BGwNbKyRqArEXUb8vwd6REnwvC+ORa/BYA+lLcDtOIr3PJXD+wqL1PAfbACpILRmmf6+sey4hJ/Po3y2nv5YxIWOLDYd0VHl6wUtpYodI08i/Ru4njWOZLtwYuPqmrh083KfvRQrJtMPI2LXeB5jc6NIkn3fdGIZ8oY5WB7WP29H1gHftWIyw87QHMoRZGdAtzv/2PS1LMps7me+4gejSpI8wBV5EAU55jMhAgmlOeFCSCQHnYXqY41ucY4BGcvX9EKOIOjEEWyS+Y+rzBiEaDCj5oDBfLodubiyDcyYaAp9igf/0+8EP3MtP/G0M2xGjBxPOTv9Ef5c/X9Dy/RjKdya0p6KBQNSvatSBtDPX3xWAclG2jZu+8QyNTkx2xaBNSzjzMbH+VheGOp2J1L/wJX+UkMHfEo4mE0k7mUeW8D2jtE9gC8SZU6DHNBDDfGzZ8A6KiHLlf2C0mdUHrxlQH/D8ueCqDgx1Mpoe9rGN/Sjx0kG2m5MOMiealD4N+tJq2vmX+fq484nwAJKqD9L3Y9Z5wZeMPpCeJ3j7wJ5TkJk2OJPoB6f2pMXKmeQgZTiZmTsC9skpNaH08v00ou/Lh42CiGzXwbZHM2tWfsS3plXMFmh3v84k6fH/Hsc9A/Cnb0TJPdEWoe+kwGcPqoOzerYxkxi7F36W3sETYBWuqZ/imvLwvRYH9w6Iu8BhYh7XgzrZFrb5TC2Q6WaZ3rGMPkCX0AeW3TH2lR5NS/edpvW8Qn+kd9OROY/+9s1H5rRdYoF/aQ+c64UHNJptWSqm0o0W0nOCkMk4H3SLVyX75tdcCqytwyESZFt85UFlIMIcDwR9ujUsEg+YeC3xoUtwtwjML47dFah2m98bCOreoI48QeWbBG/neucuCkQC18+lX+28h/5rzg14s3iOJ+9t9rS39D68XfrY5yB9/thSDO4qSWk7U8Pn/mNT5+M/aarY8mu+qTCybRnt38rzS5x49MpbNl/52HH9bivAsgmtmGTqgiMg6HHXY1aY5fX6He0/0tmh/WLzwpXhzsTcWyZnbF3aoL1swZNGC1nTTXps3TOeInHGwMaQMgSAAQ7AuI09bPJWAclCLcHqUO3EIb9+371H6eX0SfrXV1cJpOv5S6D+sBgOU7LqVSiBabDt6Ocnnn+a/m06r8OrOBca+f8FUcr9zjhX5CTaGg8rAjOvBoRg2AXumDR1z5o1UyJzws/2Wr98up88/aW11/EOFB8XtTVTBDJlTXhOhJKpBYfoF0PoF1AwBAoObT50KO3TLGJLB++pySS9p3buO2pHxoLDDZ+mwWE13SeDzpxAZc6MOn1XPKTfy+gJvL+zM9+Z6T/mLsDwltnSGbHWQ6y/+TduhNfNyHbRQPTIoh//PCIKMe654JHIOroVqtahHh25Eqro1nXHhMdT77yTOpE68U7qHeFx+WN6zx/onvffh4V/EFENodekboRb6DrhGrgx8917poyMP4SnGFCFH5TJsWOo7g96Mb0ZN7h++YPfFnklL8zjWKaK386MVrD6wbK07x7X1ezI8CuZ/cmIs4vtZnOc9nBvczbv1EAQYZk9hfq43cFs1gof036udnWxweCBueOHzLphj77r20f0O8q4MQcyLpaBpP/TkKZrF3Xq8ZSH4cLv9arJBLLoO7029Z3hgId9i8x2j+3hWJhv3NnjulJSnv5M2Wp31PNHkqPebhl4xp+EM0/s4njohol/27r1b3Q/vZ3uZyGxy+LKN+bn/Z3+NXb1xNEmk6nI6cz95SU//uKiXK2kPLiJPvPIuFunjA6HyhSn0vPLn0OgK8epuWrCd9Dr3+l7JBEO5Lvlx359GGZfXaRqg7OGiby4s8vykRcX5qlbTWaTIbvYbHPlOpsacj6qcTVYJ8/GEk3NJZGs3GDbqFxwRvxh57xZYduYQDg3MCWZc15fidybtIjNdh//TwL4ZrzoyzARWxxn7y6hZFffxcpwWk3v/+yvlChLzpyFiz+Fx+THaDUcYwccP/s8HcUIiPR6apQ45+yOY8c4DqVtSen95cHaJhPPusJznmcmV3XYyuQx/Pz/AAfdhq542o2QsWrDMBCGfyVOSjOUDn4AdSlJiY1sMCTZ0hQHQqcM6RyMahsSKVj2EChd+wgd+wZ9s7xDz4pKl0IrkO7T3a+73wZwhU8wnNcNHhwzDPDiuIMLvDvu4hYnxx4G7M5xD9fsyXGf8q+kZN4l3e7tq5YZfDw77tDcN8ddPOLDsQef+Y574Cxx3Kd8gQU0DjiiQokcBWpwDJFhRDGGQIQEY+IV6SQU0RwGezR0GpvBQh+OVZkXNR9mIx6LKBnzlZaKz82+MUaSZGmV0k7JqJOit1hKJasy04p4TcWcmu6wJRHWMm92W4LUimsbK1JIayskYxwz2r81PlciTBBgSvv7M5BqVae6yiWPQ8Fn/McAXaJJMA1a8/9wu7FFQ2Vtf4mwE0IbW2fYyMqUWnEholAIwf/u+QXtVlqxAAAAeNpt0meTFVUUheH7DhkJEgQJgpIFhdvn7NM9gxKGCZKzKGZyUHJGySAgSq7i5wrFfYdPdFXX+tRP9V61Wl2tt8//rdbh1vueV29eWl2tYXQxjOGMYCSjGM0YxvIB4xjPBCbyIZOYzBSm8hHTmM7HzGAms5jNJ8xhLp/yGfOYzwIWsojFLOFzlrKML/iS5aygTUUiExRqGrrpYSVf8TWrWM0a1tLLOvroZ4BBvmE9G9jIJjazha1sYzs72MkudvMte/iO79nLD/zIT/zML/zKb+xjPwc4yCEOc4SjHOM4v/MHJzjJKU5zhrOc4zwXuMglLnOFq/zJX1zjOje4yS1uc4e73ONv7vOAh/zDI/7lPx7zhKc84zkveDnqwsljg1W7bVZmMrMZZjFrszG7zZ63mfSSXtJLekkv6SW9pJf00pBX6VV6lV6lV+lVepVepVfpVXpJL+klvaSX9JJe6njZu7J3Ze/K3pW9K3tXbg9915id/wid0Amd0Amd0Amd0Il3TueesJ+wn7CfsJ+wn7CfsJ+wn7CfsJ+wn7CfsJ+wn7CfsJ+wn0h6SS/pZb2sl/WyXtbLelkv62W9rBd6oRd6oRd6oRd6oRd6oVf0il7RK3pFr+gVvaJX9IperVfr1Xq1Xq1X69V6tV6tV+s1eo1eo9foNXqNXtPxijsr7qy4s+LOijsr7qy0h75rzG6zx+w115l9Zr85YA520l0Wd1ncZXGXxV0Wd1ncZama1x+EcTsAAAAB//8AAnjaY2BgYGQAgosrjpwF0ZcUq9bCaABTzgdAAAA=") format("woff"), + url("./../tortuga/assets/genericons/Genericons.ttf") format("truetype"), + url("./../tortuga/assets/genericons/Genericons.svg#Genericons") format("svg"); + font-weight: normal; + font-style: normal; +} + +@media screen and (-webkit-min-device-pixel-ratio:0) { + @font-face { + font-family: "Genericons"; + src: url("./../tortuga/assets/genericons/Genericons.svg#Genericons") format("svg"); + } +} + + +/** + * All Genericons + */ + +.genericon { + font-size: 16px; + vertical-align: top; + text-align: center; + -moz-transition: color .1s ease-in 0; + -webkit-transition: color .1s ease-in 0; + display: inline-block; + font-family: "Genericons"; + font-style: normal; + font-weight: normal; + font-variant: normal; + line-height: 1; + text-decoration: inherit; + text-transform: none; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + speak: none; +} + + +/** + * Helper classes + */ + +.genericon-rotate-90 { + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); +} + +.genericon-rotate-180 { + -webkit-transform: rotate(180deg); + -moz-transform: rotate(180deg); + -ms-transform: rotate(180deg); + -o-transform: rotate(180deg); + transform: rotate(180deg); + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); +} + +.genericon-rotate-270 { + -webkit-transform: rotate(270deg); + -moz-transform: rotate(270deg); + -ms-transform: rotate(270deg); + -o-transform: rotate(270deg); + transform: rotate(270deg); + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); +} + +.genericon-flip-horizontal { + -webkit-transform: scale(-1, 1); + -moz-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + -o-transform: scale(-1, 1); + transform: scale(-1, 1); +} + +.genericon-flip-vertical { + -webkit-transform: scale(1, -1); + -moz-transform: scale(1, -1); + -ms-transform: scale(1, -1); + -o-transform: scale(1, -1); + transform: scale(1, -1); +} + + +/** + * Individual icons + */ + +.genericon-404:before { content: "\f423"; } +.genericon-activity:before { content: "\f508"; } +.genericon-anchor:before { content: "\f509"; } +.genericon-aside:before { content: "\f101"; } +.genericon-attachment:before { content: "\f416"; } +.genericon-audio:before { content: "\f109"; } +.genericon-bold:before { content: "\f471"; } +.genericon-book:before { content: "\f444"; } +.genericon-bug:before { content: "\f50a"; } +.genericon-cart:before { content: "\f447"; } +.genericon-category:before { content: "\f301"; } +.genericon-chat:before { content: "\f108"; } +.genericon-checkmark:before { content: "\f418"; } +.genericon-close:before { content: "\f405"; } +.genericon-close-alt:before { content: "\f406"; } +.genericon-cloud:before { content: "\f426"; } +.genericon-cloud-download:before { content: "\f440"; } +.genericon-cloud-upload:before { content: "\f441"; } +.genericon-code:before { content: "\f462"; } +.genericon-codepen:before { content: "\f216"; } +.genericon-cog:before { content: "\f445"; } +.genericon-collapse:before { content: "\f432"; } +.genericon-comment:before { content: "\f300"; } +.genericon-day:before { content: "\f305"; } +.genericon-digg:before { content: "\f221"; } +.genericon-document:before { content: "\f443"; } +.genericon-dot:before { content: "\f428"; } +.genericon-downarrow:before { content: "\f502"; } +.genericon-download:before { content: "\f50b"; } +.genericon-draggable:before { content: "\f436"; } +.genericon-dribbble:before { content: "\f201"; } +.genericon-dropbox:before { content: "\f225"; } +.genericon-dropdown:before { content: "\f433"; } +.genericon-dropdown-left:before { content: "\f434"; } +.genericon-edit:before { content: "\f411"; } +.genericon-ellipsis:before { content: "\f476"; } +.genericon-expand:before { content: "\f431"; } +.genericon-external:before { content: "\f442"; } +.genericon-facebook:before { content: "\f203"; } +.genericon-facebook-alt:before { content: "\f204"; } +.genericon-fastforward:before { content: "\f458"; } +.genericon-feed:before { content: "\f413"; } +.genericon-flag:before { content: "\f468"; } +.genericon-flickr:before { content: "\f211"; } +.genericon-foursquare:before { content: "\f226"; } +.genericon-fullscreen:before { content: "\f474"; } +.genericon-gallery:before { content: "\f103"; } +.genericon-github:before { content: "\f200"; } +.genericon-googleplus:before { content: "\f206"; } +.genericon-googleplus-alt:before { content: "\f218"; } +.genericon-handset:before { content: "\f50c"; } +.genericon-heart:before { content: "\f461"; } +.genericon-help:before { content: "\f457"; } +.genericon-hide:before { content: "\f404"; } +.genericon-hierarchy:before { content: "\f505"; } +.genericon-home:before { content: "\f409"; } +.genericon-image:before { content: "\f102"; } +.genericon-info:before { content: "\f455"; } +.genericon-instagram:before { content: "\f215"; } +.genericon-italic:before { content: "\f472"; } +.genericon-key:before { content: "\f427"; } +.genericon-leftarrow:before { content: "\f503"; } +.genericon-link:before { content: "\f107"; } +.genericon-linkedin:before { content: "\f207"; } +.genericon-linkedin-alt:before { content: "\f208"; } +.genericon-location:before { content: "\f417"; } +.genericon-lock:before { content: "\f470"; } +.genericon-mail:before { content: "\f410"; } +.genericon-maximize:before { content: "\f422"; } +.genericon-menu:before { content: "\f419"; } +.genericon-microphone:before { content: "\f50d"; } +.genericon-minimize:before { content: "\f421"; } +.genericon-minus:before { content: "\f50e"; } +.genericon-month:before { content: "\f307"; } +.genericon-move:before { content: "\f50f"; } +.genericon-next:before { content: "\f429"; } +.genericon-notice:before { content: "\f456"; } +.genericon-paintbrush:before { content: "\f506"; } +.genericon-path:before { content: "\f219"; } +.genericon-pause:before { content: "\f448"; } +.genericon-phone:before { content: "\f437"; } +.genericon-picture:before { content: "\f473"; } +.genericon-pinned:before { content: "\f308"; } +.genericon-pinterest:before { content: "\f209"; } +.genericon-pinterest-alt:before { content: "\f210"; } +.genericon-play:before { content: "\f452"; } +.genericon-plugin:before { content: "\f439"; } +.genericon-plus:before { content: "\f510"; } +.genericon-pocket:before { content: "\f224"; } +.genericon-polldaddy:before { content: "\f217"; } +.genericon-portfolio:before { content: "\f460"; } +.genericon-previous:before { content: "\f430"; } +.genericon-print:before { content: "\f469"; } +.genericon-quote:before { content: "\f106"; } +.genericon-rating-empty:before { content: "\f511"; } +.genericon-rating-full:before { content: "\f512"; } +.genericon-rating-half:before { content: "\f513"; } +.genericon-reddit:before { content: "\f222"; } +.genericon-refresh:before { content: "\f420"; } +.genericon-reply:before { content: "\f412"; } +.genericon-reply-alt:before { content: "\f466"; } +.genericon-reply-single:before { content: "\f467"; } +.genericon-rewind:before { content: "\f459"; } +.genericon-rightarrow:before { content: "\f501"; } +.genericon-search:before { content: "\f400"; } +.genericon-send-to-phone:before { content: "\f438"; } +.genericon-send-to-tablet:before { content: "\f454"; } +.genericon-share:before { content: "\f415"; } +.genericon-show:before { content: "\f403"; } +.genericon-shuffle:before { content: "\f514"; } +.genericon-sitemap:before { content: "\f507"; } +.genericon-skip-ahead:before { content: "\f451"; } +.genericon-skip-back:before { content: "\f450"; } +.genericon-skype:before { content: "\f220"; } +.genericon-spam:before { content: "\f424"; } +.genericon-spotify:before { content: "\f515"; } +.genericon-standard:before { content: "\f100"; } +.genericon-star:before { content: "\f408"; } +.genericon-status:before { content: "\f105"; } +.genericon-stop:before { content: "\f449"; } +.genericon-stumbleupon:before { content: "\f223"; } +.genericon-subscribe:before { content: "\f463"; } +.genericon-subscribed:before { content: "\f465"; } +.genericon-summary:before { content: "\f425"; } +.genericon-tablet:before { content: "\f453"; } +.genericon-tag:before { content: "\f302"; } +.genericon-time:before { content: "\f303"; } +.genericon-top:before { content: "\f435"; } +.genericon-trash:before { content: "\f407"; } +.genericon-tumblr:before { content: "\f214"; } +.genericon-twitch:before { content: "\f516"; } +.genericon-twitter:before { content: "\f202"; } +.genericon-unapprove:before { content: "\f446"; } +.genericon-unsubscribe:before { content: "\f464"; } +.genericon-unzoom:before { content: "\f401"; } +.genericon-uparrow:before { content: "\f500"; } +.genericon-user:before { content: "\f304"; } +.genericon-video:before { content: "\f104"; } +.genericon-videocamera:before { content: "\f517"; } +.genericon-vimeo:before { content: "\f212"; } +.genericon-warning:before { content: "\f414"; } +.genericon-website:before { content: "\f475"; } +.genericon-week:before { content: "\f306"; } +.genericon-wordpress:before { content: "\f205"; } +.genericon-xpost:before { content: "\f504"; } +.genericon-youtube:before { content: "\f213"; } +.genericon-zoom:before { content: "\f402"; } + + + + +/* /wp-includes/css/dist/block-library/style.min.css?ver=5.6 */ + +:root{--wp-admin-theme-color:#007cba;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-20:#005a87}#start-resizable-editor-section{display:none}.wp-block-audio figcaption{margin-top:.5em;margin-bottom:1em}.wp-block-audio audio{width:100%;min-width:300px}.wp-block-button__link{color:#fff;background-color:#32373c;border:none;border-radius:1.55em;box-shadow:none;cursor:pointer;display:inline-block;font-size:1.125em;padding:.667em 1.333em;text-align:center;text-decoration:none;overflow-wrap:break-word}.wp-block-button__link:active,.wp-block-button__link:focus,.wp-block-button__link:hover,.wp-block-button__link:visited{color:#fff}.wp-block-button__link.aligncenter{text-align:center}.wp-block-button__link.alignright{text-align:right}.wp-block-button.is-style-squared,.wp-block-button__link.wp-block-button.is-style-squared{border-radius:0}.wp-block-button.no-border-radius,.wp-block-button__link.no-border-radius{border-radius:0!important}.is-style-outline>.wp-block-button__link,.wp-block-button__link.is-style-outline{border:2px solid}.is-style-outline>.wp-block-button__link:not(.has-text-color),.wp-block-button__link.is-style-outline:not(.has-text-color){color:#32373c}.is-style-outline>.wp-block-button__link:not(.has-background),.wp-block-button__link.is-style-outline:not(.has-background){background-color:transparent}.wp-block-buttons .wp-block-button{display:inline-block;margin-right:.5em;margin-bottom:.5em}.wp-block-buttons .wp-block-button:last-child{margin-right:0}.wp-block-buttons.alignright .wp-block-button{margin-right:0;margin-left:.5em}.wp-block-buttons.alignright .wp-block-button:first-child{margin-left:0}.wp-block-buttons.alignleft .wp-block-button{margin-left:0;margin-right:.5em}.wp-block-buttons.alignleft .wp-block-button:last-child{margin-right:0}.wp-block-button.aligncenter,.wp-block-buttons.aligncenter,.wp-block-calendar{text-align:center}.wp-block-calendar tbody td,.wp-block-calendar th{padding:.25em;border:1px solid #ddd}.wp-block-calendar tfoot td{border:none}.wp-block-calendar table{width:100%;border-collapse:collapse}.wp-block-calendar table th{font-weight:400;background:#ddd}.wp-block-calendar a{text-decoration:underline}.wp-block-calendar table caption,.wp-block-calendar table tbody{color:#40464d}.wp-block-categories.alignleft{margin-right:2em}.wp-block-categories.alignright{margin-left:2em}.wp-block-code code{white-space:pre-wrap;overflow-wrap:break-word}.wp-block-columns{display:flex;margin-bottom:1.75em;flex-wrap:wrap}@media (min-width:782px){.wp-block-columns{flex-wrap:nowrap}}.wp-block-columns.has-background{padding:1.25em 2.375em}.wp-block-columns.are-vertically-aligned-top{align-items:flex-start}.wp-block-columns.are-vertically-aligned-center{align-items:center}.wp-block-columns.are-vertically-aligned-bottom{align-items:flex-end}.wp-block-column{flex-grow:1;min-width:0;word-break:break-word;overflow-wrap:break-word}@media (max-width:599px){.wp-block-column{flex-basis:100%!important}}@media (min-width:600px) and (max-width:781px){.wp-block-column:not(:only-child){flex-basis:calc(50% - 1em)!important;flex-grow:0}.wp-block-column:nth-child(2n){margin-left:2em}}@media (min-width:782px){.wp-block-column{flex-basis:0;flex-grow:1}.wp-block-column[style*=flex-basis]{flex-grow:0}.wp-block-column:not(:first-child){margin-left:2em}}.wp-block-column.is-vertically-aligned-top{align-self:flex-start}.wp-block-column.is-vertically-aligned-center{-ms-grid-row-align:center;align-self:center}.wp-block-column.is-vertically-aligned-bottom{align-self:flex-end}.wp-block-column.is-vertically-aligned-bottom,.wp-block-column.is-vertically-aligned-center,.wp-block-column.is-vertically-aligned-top{width:100%}.wp-block-cover,.wp-block-cover-image{position:relative;background-size:cover;background-position:50%;min-height:430px;height:100%;width:100%;display:flex;justify-content:center;align-items:center;padding:1em;box-sizing:border-box}.wp-block-cover-image.has-parallax,.wp-block-cover.has-parallax{background-attachment:fixed}@supports (-webkit-overflow-scrolling:touch){.wp-block-cover-image.has-parallax,.wp-block-cover.has-parallax{background-attachment:scroll}}@media (prefers-reduced-motion:reduce){.wp-block-cover-image.has-parallax,.wp-block-cover.has-parallax{background-attachment:scroll}}.wp-block-cover-image.is-repeated,.wp-block-cover.is-repeated{background-repeat:repeat;background-size:auto}.wp-block-cover-image.has-background-dim:not([class*=-background-color]),.wp-block-cover.has-background-dim:not([class*=-background-color]){background-color:#000}.wp-block-cover-image.has-background-dim:before,.wp-block-cover.has-background-dim:before{content:"";background-color:inherit}.wp-block-cover-image.has-background-dim:not(.has-background-gradient):before,.wp-block-cover-image .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim:not(.has-background-gradient):before,.wp-block-cover .wp-block-cover__gradient-background{position:absolute;top:0;left:0;bottom:0;right:0;z-index:1;opacity:.5}.wp-block-cover-image.has-background-dim.has-background-dim-10 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-10:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-10 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-10:not(.has-background-gradient):before{opacity:.1}.wp-block-cover-image.has-background-dim.has-background-dim-20 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-20:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-20 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-20:not(.has-background-gradient):before{opacity:.2}.wp-block-cover-image.has-background-dim.has-background-dim-30 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-30:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-30 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-30:not(.has-background-gradient):before{opacity:.3}.wp-block-cover-image.has-background-dim.has-background-dim-40 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-40:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-40 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-40:not(.has-background-gradient):before{opacity:.4}.wp-block-cover-image.has-background-dim.has-background-dim-50 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-50:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-50 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-50:not(.has-background-gradient):before{opacity:.5}.wp-block-cover-image.has-background-dim.has-background-dim-60 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-60:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-60 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-60:not(.has-background-gradient):before{opacity:.6}.wp-block-cover-image.has-background-dim.has-background-dim-70 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-70:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-70 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-70:not(.has-background-gradient):before{opacity:.7}.wp-block-cover-image.has-background-dim.has-background-dim-80 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-80:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-80 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-80:not(.has-background-gradient):before{opacity:.8}.wp-block-cover-image.has-background-dim.has-background-dim-90 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-90:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-90 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-90:not(.has-background-gradient):before{opacity:.9}.wp-block-cover-image.has-background-dim.has-background-dim-100 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-100:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-100 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-100:not(.has-background-gradient):before{opacity:1}.wp-block-cover-image.alignleft,.wp-block-cover-image.alignright,.wp-block-cover.alignleft,.wp-block-cover.alignright{max-width:290px;width:100%}.wp-block-cover-image:after,.wp-block-cover:after{display:block;content:"";font-size:0;min-height:inherit}@supports ((position:-webkit-sticky) or (position:sticky)){.wp-block-cover-image:after,.wp-block-cover:after{content:none}}.wp-block-cover-image.aligncenter,.wp-block-cover-image.alignleft,.wp-block-cover-image.alignright,.wp-block-cover.aligncenter,.wp-block-cover.alignleft,.wp-block-cover.alignright{display:flex}.wp-block-cover-image .wp-block-cover__inner-container,.wp-block-cover .wp-block-cover__inner-container{width:100%;z-index:1;color:#fff}.wp-block-cover-image .wp-block-subhead:not(.has-text-color),.wp-block-cover-image h1:not(.has-text-color),.wp-block-cover-image h2:not(.has-text-color),.wp-block-cover-image h3:not(.has-text-color),.wp-block-cover-image h4:not(.has-text-color),.wp-block-cover-image h5:not(.has-text-color),.wp-block-cover-image h6:not(.has-text-color),.wp-block-cover-image p:not(.has-text-color),.wp-block-cover .wp-block-subhead:not(.has-text-color),.wp-block-cover h1:not(.has-text-color),.wp-block-cover h2:not(.has-text-color),.wp-block-cover h3:not(.has-text-color),.wp-block-cover h4:not(.has-text-color),.wp-block-cover h5:not(.has-text-color),.wp-block-cover h6:not(.has-text-color),.wp-block-cover p:not(.has-text-color){color:inherit}.wp-block-cover-image.is-position-top-left,.wp-block-cover.is-position-top-left{align-items:flex-start;justify-content:flex-start}.wp-block-cover-image.is-position-top-center,.wp-block-cover.is-position-top-center{align-items:flex-start;justify-content:center}.wp-block-cover-image.is-position-top-right,.wp-block-cover.is-position-top-right{align-items:flex-start;justify-content:flex-end}.wp-block-cover-image.is-position-center-left,.wp-block-cover.is-position-center-left{align-items:center;justify-content:flex-start}.wp-block-cover-image.is-position-center-center,.wp-block-cover.is-position-center-center{align-items:center;justify-content:center}.wp-block-cover-image.is-position-center-right,.wp-block-cover.is-position-center-right{align-items:center;justify-content:flex-end}.wp-block-cover-image.is-position-bottom-left,.wp-block-cover.is-position-bottom-left{align-items:flex-end;justify-content:flex-start}.wp-block-cover-image.is-position-bottom-center,.wp-block-cover.is-position-bottom-center{align-items:flex-end;justify-content:center}.wp-block-cover-image.is-position-bottom-right,.wp-block-cover.is-position-bottom-right{align-items:flex-end;justify-content:flex-end}.wp-block-cover-image.has-custom-content-position.has-custom-content-position .wp-block-cover__inner-container,.wp-block-cover.has-custom-content-position.has-custom-content-position .wp-block-cover__inner-container{margin:0;width:auto}.wp-block-cover__video-background{position:absolute;top:50%;left:50%;transform:translateX(-50%) translateY(-50%);width:100%;height:100%;z-index:0;object-fit:cover}.wp-block-cover-image-text,.wp-block-cover-text,section.wp-block-cover-image h2{color:#fff}.wp-block-cover-image-text a,.wp-block-cover-image-text a:active,.wp-block-cover-image-text a:focus,.wp-block-cover-image-text a:hover,.wp-block-cover-text a,.wp-block-cover-text a:active,.wp-block-cover-text a:focus,.wp-block-cover-text a:hover,section.wp-block-cover-image h2 a,section.wp-block-cover-image h2 a:active,section.wp-block-cover-image h2 a:focus,section.wp-block-cover-image h2 a:hover{color:#fff}.wp-block-cover-image .wp-block-cover.has-left-content{justify-content:flex-start}.wp-block-cover-image .wp-block-cover.has-right-content{justify-content:flex-end}.wp-block-cover-image.has-left-content .wp-block-cover-image-text,.wp-block-cover.has-left-content .wp-block-cover-text,section.wp-block-cover-image.has-left-content>h2{margin-left:0;text-align:left}.wp-block-cover-image.has-right-content .wp-block-cover-image-text,.wp-block-cover.has-right-content .wp-block-cover-text,section.wp-block-cover-image.has-right-content>h2{margin-right:0;text-align:right}.wp-block-cover-image .wp-block-cover-image-text,.wp-block-cover .wp-block-cover-text,section.wp-block-cover-image>h2{font-size:2em;line-height:1.25;z-index:1;margin-bottom:0;max-width:580px;padding:.44em;text-align:center}.wp-block-embed.alignleft,.wp-block-embed.alignright,.wp-block[data-align=left]>[data-type="core/embed"],.wp-block[data-align=right]>[data-type="core/embed"]{max-width:360px;width:100%}.wp-block-embed.alignleft .wp-block-embed__wrapper,.wp-block-embed.alignright .wp-block-embed__wrapper,.wp-block[data-align=left]>[data-type="core/embed"] .wp-block-embed__wrapper,.wp-block[data-align=right]>[data-type="core/embed"] .wp-block-embed__wrapper{min-width:280px}.wp-block-embed{margin-bottom:1em}.wp-block-embed figcaption{margin-top:.5em;margin-bottom:1em}.wp-block-embed iframe{max-width:100%}.wp-block-embed__wrapper{position:relative}.wp-embed-responsive .wp-has-aspect-ratio .wp-block-embed__wrapper:before{content:"";display:block;padding-top:50%}.wp-embed-responsive .wp-has-aspect-ratio iframe{position:absolute;top:0;right:0;bottom:0;left:0;height:100%;width:100%}.wp-embed-responsive .wp-embed-aspect-21-9 .wp-block-embed__wrapper:before{padding-top:42.85%}.wp-embed-responsive .wp-embed-aspect-18-9 .wp-block-embed__wrapper:before{padding-top:50%}.wp-embed-responsive .wp-embed-aspect-16-9 .wp-block-embed__wrapper:before{padding-top:56.25%}.wp-embed-responsive .wp-embed-aspect-4-3 .wp-block-embed__wrapper:before{padding-top:75%}.wp-embed-responsive .wp-embed-aspect-1-1 .wp-block-embed__wrapper:before{padding-top:100%}.wp-embed-responsive .wp-embed-aspect-9-16 .wp-block-embed__wrapper:before{padding-top:177.77%}.wp-embed-responsive .wp-embed-aspect-1-2 .wp-block-embed__wrapper:before{padding-top:200%}.wp-block-file{margin-bottom:1.5em}.wp-block-file.aligncenter{text-align:center}.wp-block-file.alignright{text-align:right}.wp-block-file .wp-block-file__button{background:#32373c;border-radius:2em;color:#fff;font-size:.8em;padding:.5em 1em}.wp-block-file a.wp-block-file__button{text-decoration:none}.wp-block-file a.wp-block-file__button:active,.wp-block-file a.wp-block-file__button:focus,.wp-block-file a.wp-block-file__button:hover,.wp-block-file a.wp-block-file__button:visited{box-shadow:none;color:#fff;opacity:.85;text-decoration:none}.wp-block-file *+.wp-block-file__button{margin-left:.75em}.blocks-gallery-grid,.wp-block-gallery{display:flex;flex-wrap:wrap;list-style-type:none;padding:0;margin:0}.blocks-gallery-grid .blocks-gallery-image,.blocks-gallery-grid .blocks-gallery-item,.wp-block-gallery .blocks-gallery-image,.wp-block-gallery .blocks-gallery-item{margin:0 1em 1em 0;display:flex;flex-grow:1;flex-direction:column;justify-content:center;position:relative;width:calc(50% - 1em)}.blocks-gallery-grid .blocks-gallery-image:nth-of-type(2n),.blocks-gallery-grid .blocks-gallery-item:nth-of-type(2n),.wp-block-gallery .blocks-gallery-image:nth-of-type(2n),.wp-block-gallery .blocks-gallery-item:nth-of-type(2n){margin-right:0}.blocks-gallery-grid .blocks-gallery-image figure,.blocks-gallery-grid .blocks-gallery-item figure,.wp-block-gallery .blocks-gallery-image figure,.wp-block-gallery .blocks-gallery-item figure{margin:0;height:100%}@supports ((position:-webkit-sticky) or (position:sticky)){.blocks-gallery-grid .blocks-gallery-image figure,.blocks-gallery-grid .blocks-gallery-item figure,.wp-block-gallery .blocks-gallery-image figure,.wp-block-gallery .blocks-gallery-item figure{display:flex;align-items:flex-end;justify-content:flex-start}}.blocks-gallery-grid .blocks-gallery-image img,.blocks-gallery-grid .blocks-gallery-item img,.wp-block-gallery .blocks-gallery-image img,.wp-block-gallery .blocks-gallery-item img{display:block;max-width:100%;height:auto;width:100%}@supports ((position:-webkit-sticky) or (position:sticky)){.blocks-gallery-grid .blocks-gallery-image img,.blocks-gallery-grid .blocks-gallery-item img,.wp-block-gallery .blocks-gallery-image img,.wp-block-gallery .blocks-gallery-item img{width:auto}}.blocks-gallery-grid .blocks-gallery-image figcaption,.blocks-gallery-grid .blocks-gallery-item figcaption,.wp-block-gallery .blocks-gallery-image figcaption,.wp-block-gallery .blocks-gallery-item figcaption{position:absolute;bottom:0;width:100%;max-height:100%;overflow:auto;padding:3em .77em .7em;color:#fff;text-align:center;font-size:.8em;background:linear-gradient(0deg,rgba(0,0,0,.7),rgba(0,0,0,.3) 70%,transparent);box-sizing:border-box;margin:0}.blocks-gallery-grid .blocks-gallery-image figcaption img,.blocks-gallery-grid .blocks-gallery-item figcaption img,.wp-block-gallery .blocks-gallery-image figcaption img,.wp-block-gallery .blocks-gallery-item figcaption img{display:inline}.blocks-gallery-grid figcaption,.wp-block-gallery figcaption{flex-grow:1}.blocks-gallery-grid.is-cropped .blocks-gallery-image a,.blocks-gallery-grid.is-cropped .blocks-gallery-image img,.blocks-gallery-grid.is-cropped .blocks-gallery-item a,.blocks-gallery-grid.is-cropped .blocks-gallery-item img,.wp-block-gallery.is-cropped .blocks-gallery-image a,.wp-block-gallery.is-cropped .blocks-gallery-image img,.wp-block-gallery.is-cropped .blocks-gallery-item a,.wp-block-gallery.is-cropped .blocks-gallery-item img{width:100%}@supports ((position:-webkit-sticky) or (position:sticky)){.blocks-gallery-grid.is-cropped .blocks-gallery-image a,.blocks-gallery-grid.is-cropped .blocks-gallery-image img,.blocks-gallery-grid.is-cropped .blocks-gallery-item a,.blocks-gallery-grid.is-cropped .blocks-gallery-item img,.wp-block-gallery.is-cropped .blocks-gallery-image a,.wp-block-gallery.is-cropped .blocks-gallery-image img,.wp-block-gallery.is-cropped .blocks-gallery-item a,.wp-block-gallery.is-cropped .blocks-gallery-item img{height:100%;flex:1;object-fit:cover}}.blocks-gallery-grid.columns-1 .blocks-gallery-image,.blocks-gallery-grid.columns-1 .blocks-gallery-item,.wp-block-gallery.columns-1 .blocks-gallery-image,.wp-block-gallery.columns-1 .blocks-gallery-item{width:100%;margin-right:0}@media (min-width:600px){.blocks-gallery-grid.columns-3 .blocks-gallery-image,.blocks-gallery-grid.columns-3 .blocks-gallery-item,.wp-block-gallery.columns-3 .blocks-gallery-image,.wp-block-gallery.columns-3 .blocks-gallery-item{width:calc(33.33333% - .66667em);margin-right:1em}.blocks-gallery-grid.columns-4 .blocks-gallery-image,.blocks-gallery-grid.columns-4 .blocks-gallery-item,.wp-block-gallery.columns-4 .blocks-gallery-image,.wp-block-gallery.columns-4 .blocks-gallery-item{width:calc(25% - .75em);margin-right:1em}.blocks-gallery-grid.columns-5 .blocks-gallery-image,.blocks-gallery-grid.columns-5 .blocks-gallery-item,.wp-block-gallery.columns-5 .blocks-gallery-image,.wp-block-gallery.columns-5 .blocks-gallery-item{width:calc(20% - .8em);margin-right:1em}.blocks-gallery-grid.columns-6 .blocks-gallery-image,.blocks-gallery-grid.columns-6 .blocks-gallery-item,.wp-block-gallery.columns-6 .blocks-gallery-image,.wp-block-gallery.columns-6 .blocks-gallery-item{width:calc(16.66667% - .83333em);margin-right:1em}.blocks-gallery-grid.columns-7 .blocks-gallery-image,.blocks-gallery-grid.columns-7 .blocks-gallery-item,.wp-block-gallery.columns-7 .blocks-gallery-image,.wp-block-gallery.columns-7 .blocks-gallery-item{width:calc(14.28571% - .85714em);margin-right:1em}.blocks-gallery-grid.columns-8 .blocks-gallery-image,.blocks-gallery-grid.columns-8 .blocks-gallery-item,.wp-block-gallery.columns-8 .blocks-gallery-image,.wp-block-gallery.columns-8 .blocks-gallery-item{width:calc(12.5% - .875em);margin-right:1em}.blocks-gallery-grid.columns-1 .blocks-gallery-image:nth-of-type(1n),.blocks-gallery-grid.columns-1 .blocks-gallery-item:nth-of-type(1n),.wp-block-gallery.columns-1 .blocks-gallery-image:nth-of-type(1n),.wp-block-gallery.columns-1 .blocks-gallery-item:nth-of-type(1n){margin-right:0}.blocks-gallery-grid.columns-2 .blocks-gallery-image:nth-of-type(2n),.blocks-gallery-grid.columns-2 .blocks-gallery-item:nth-of-type(2n),.wp-block-gallery.columns-2 .blocks-gallery-image:nth-of-type(2n),.wp-block-gallery.columns-2 .blocks-gallery-item:nth-of-type(2n){margin-right:0}.blocks-gallery-grid.columns-3 .blocks-gallery-image:nth-of-type(3n),.blocks-gallery-grid.columns-3 .blocks-gallery-item:nth-of-type(3n),.wp-block-gallery.columns-3 .blocks-gallery-image:nth-of-type(3n),.wp-block-gallery.columns-3 .blocks-gallery-item:nth-of-type(3n){margin-right:0}.blocks-gallery-grid.columns-4 .blocks-gallery-image:nth-of-type(4n),.blocks-gallery-grid.columns-4 .blocks-gallery-item:nth-of-type(4n),.wp-block-gallery.columns-4 .blocks-gallery-image:nth-of-type(4n),.wp-block-gallery.columns-4 .blocks-gallery-item:nth-of-type(4n){margin-right:0}.blocks-gallery-grid.columns-5 .blocks-gallery-image:nth-of-type(5n),.blocks-gallery-grid.columns-5 .blocks-gallery-item:nth-of-type(5n),.wp-block-gallery.columns-5 .blocks-gallery-image:nth-of-type(5n),.wp-block-gallery.columns-5 .blocks-gallery-item:nth-of-type(5n){margin-right:0}.blocks-gallery-grid.columns-6 .blocks-gallery-image:nth-of-type(6n),.blocks-gallery-grid.columns-6 .blocks-gallery-item:nth-of-type(6n),.wp-block-gallery.columns-6 .blocks-gallery-image:nth-of-type(6n),.wp-block-gallery.columns-6 .blocks-gallery-item:nth-of-type(6n){margin-right:0}.blocks-gallery-grid.columns-7 .blocks-gallery-image:nth-of-type(7n),.blocks-gallery-grid.columns-7 .blocks-gallery-item:nth-of-type(7n),.wp-block-gallery.columns-7 .blocks-gallery-image:nth-of-type(7n),.wp-block-gallery.columns-7 .blocks-gallery-item:nth-of-type(7n){margin-right:0}.blocks-gallery-grid.columns-8 .blocks-gallery-image:nth-of-type(8n),.blocks-gallery-grid.columns-8 .blocks-gallery-item:nth-of-type(8n),.wp-block-gallery.columns-8 .blocks-gallery-image:nth-of-type(8n),.wp-block-gallery.columns-8 .blocks-gallery-item:nth-of-type(8n){margin-right:0}}.blocks-gallery-grid .blocks-gallery-image:last-child,.blocks-gallery-grid .blocks-gallery-item:last-child,.wp-block-gallery .blocks-gallery-image:last-child,.wp-block-gallery .blocks-gallery-item:last-child{margin-right:0}.blocks-gallery-grid.alignleft,.blocks-gallery-grid.alignright,.wp-block-gallery.alignleft,.wp-block-gallery.alignright{max-width:290px;width:100%}.blocks-gallery-grid.aligncenter .blocks-gallery-item figure,.wp-block-gallery.aligncenter .blocks-gallery-item figure{justify-content:center}.wp-block-group{box-sizing:border-box}h1.has-background,h2.has-background,h3.has-background,h4.has-background,h5.has-background,h6.has-background{padding:1.25em 2.375em}.wp-block-image{margin-bottom:1em}.wp-block-image img{max-width:100%}.wp-block-image.aligncenter{text-align:center}.wp-block-image.alignfull img,.wp-block-image.alignwide img{width:100%}.wp-block-image .aligncenter,.wp-block-image .alignleft,.wp-block-image .alignright{display:table}.wp-block-image .aligncenter>figcaption,.wp-block-image .alignleft>figcaption,.wp-block-image .alignright>figcaption{display:table-caption;caption-side:bottom}.wp-block-image .alignleft{float:left;margin:.5em 1em .5em 0}.wp-block-image .alignright{float:right;margin:.5em 0 .5em 1em}.wp-block-image .aligncenter{margin-left:auto;margin-right:auto}.wp-block-image figcaption{margin-top:.5em;margin-bottom:1em}.is-style-circle-mask img,.is-style-rounded img{border-radius:9999px}@supports ((-webkit-mask-image:none) or (mask-image:none)) or (-webkit-mask-image:none){.is-style-circle-mask img{-webkit-mask-image:url('data:image/svg+xml;utf8,');mask-image:url('data:image/svg+xml;utf8,');mask-mode:alpha;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center;border-radius:0}}.wp-block-latest-comments__comment{line-height:1.1;list-style:none;margin-bottom:1em}.has-avatars .wp-block-latest-comments__comment{min-height:2.25em;list-style:none}.has-avatars .wp-block-latest-comments__comment .wp-block-latest-comments__comment-excerpt,.has-avatars .wp-block-latest-comments__comment .wp-block-latest-comments__comment-meta{margin-left:3.25em}.has-dates .wp-block-latest-comments__comment,.has-excerpts .wp-block-latest-comments__comment{line-height:1.5}.wp-block-latest-comments__comment-excerpt p{font-size:.875em;line-height:1.8;margin:.36em 0 1.4em}.wp-block-latest-comments__comment-date{display:block;font-size:.75em}.wp-block-latest-comments .avatar,.wp-block-latest-comments__comment-avatar{border-radius:1.5em;display:block;float:left;height:2.5em;margin-right:.75em;width:2.5em}.wp-block-latest-posts.alignleft{margin-right:2em}.wp-block-latest-posts.alignright{margin-left:2em}.wp-block-latest-posts.wp-block-latest-posts__list{list-style:none}.wp-block-latest-posts.wp-block-latest-posts__list li{clear:both}.wp-block-latest-posts.is-grid{display:flex;flex-wrap:wrap;padding:0}.wp-block-latest-posts.is-grid li{margin:0 1.25em 1.25em 0;width:100%}@media (min-width:600px){.wp-block-latest-posts.columns-2 li{width:calc(50% - .625em)}.wp-block-latest-posts.columns-2 li:nth-child(2n){margin-right:0}.wp-block-latest-posts.columns-3 li{width:calc(33.33333% - .83333em)}.wp-block-latest-posts.columns-3 li:nth-child(3n){margin-right:0}.wp-block-latest-posts.columns-4 li{width:calc(25% - .9375em)}.wp-block-latest-posts.columns-4 li:nth-child(4n){margin-right:0}.wp-block-latest-posts.columns-5 li{width:calc(20% - 1em)}.wp-block-latest-posts.columns-5 li:nth-child(5n){margin-right:0}.wp-block-latest-posts.columns-6 li{width:calc(16.66667% - 1.04167em)}.wp-block-latest-posts.columns-6 li:nth-child(6n){margin-right:0}}.wp-block-latest-posts__post-author,.wp-block-latest-posts__post-date{display:block;color:#555;font-size:.8125em}.wp-block-latest-posts__post-excerpt{margin-top:.5em;margin-bottom:1em}.wp-block-latest-posts__featured-image a{display:inline-block}.wp-block-latest-posts__featured-image img{height:auto;width:auto}.wp-block-latest-posts__featured-image.alignleft{margin-right:1em}.wp-block-latest-posts__featured-image.alignright{margin-left:1em}.wp-block-latest-posts__featured-image.aligncenter{margin-bottom:1em;text-align:center}.block-editor-image-alignment-control__row .components-base-control__field{display:flex;justify-content:space-between;align-items:center}.block-editor-image-alignment-control__row .components-base-control__field .components-base-control__label{margin-bottom:0}ol.has-background,ul.has-background{padding:1.25em 2.375em}.wp-block-media-text{ + /*!rtl:begin:ignore*/direction:ltr; + /*!rtl:end:ignore*/display:-ms-grid;display:grid;-ms-grid-columns:50% 1fr;grid-template-columns:50% 1fr;-ms-grid-rows:auto;grid-template-rows:auto}.wp-block-media-text.has-media-on-the-right{-ms-grid-columns:1fr 50%;grid-template-columns:1fr 50%}.wp-block-media-text.is-vertically-aligned-top .wp-block-media-text__content,.wp-block-media-text.is-vertically-aligned-top .wp-block-media-text__media{-ms-grid-row-align:start;align-self:start}.wp-block-media-text.is-vertically-aligned-center .wp-block-media-text__content,.wp-block-media-text.is-vertically-aligned-center .wp-block-media-text__media,.wp-block-media-text .wp-block-media-text__content,.wp-block-media-text .wp-block-media-text__media{-ms-grid-row-align:center;align-self:center}.wp-block-media-text.is-vertically-aligned-bottom .wp-block-media-text__content,.wp-block-media-text.is-vertically-aligned-bottom .wp-block-media-text__media{-ms-grid-row-align:end;align-self:end}.wp-block-media-text .wp-block-media-text__media{ + /*!rtl:begin:ignore*/-ms-grid-column:1;grid-column:1;-ms-grid-row:1;grid-row:1; + /*!rtl:end:ignore*/margin:0}.wp-block-media-text .wp-block-media-text__content{direction:ltr; + /*!rtl:begin:ignore*/-ms-grid-column:2;grid-column:2;-ms-grid-row:1;grid-row:1; + /*!rtl:end:ignore*/padding:0 8%;word-break:break-word}.wp-block-media-text.has-media-on-the-right .wp-block-media-text__media{ + /*!rtl:begin:ignore*/-ms-grid-column:2;grid-column:2;-ms-grid-row:1;grid-row:1 + /*!rtl:end:ignore*/}.wp-block-media-text.has-media-on-the-right .wp-block-media-text__content{ + /*!rtl:begin:ignore*/-ms-grid-column:1;grid-column:1;-ms-grid-row:1;grid-row:1 + /*!rtl:end:ignore*/}.wp-block-media-text__media img,.wp-block-media-text__media video{max-width:unset;width:100%;vertical-align:middle}.wp-block-media-text.is-image-fill figure.wp-block-media-text__media{height:100%;min-height:250px;background-size:cover}.wp-block-media-text.is-image-fill figure.wp-block-media-text__media>img{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}@media (max-width:600px){.wp-block-media-text.is-stacked-on-mobile{-ms-grid-columns:100%!important;grid-template-columns:100%!important}.wp-block-media-text.is-stacked-on-mobile .wp-block-media-text__media{-ms-grid-column:1;grid-column:1;-ms-grid-row:1;grid-row:1}.wp-block-media-text.is-stacked-on-mobile .wp-block-media-text__content{-ms-grid-column:1;grid-column:1;-ms-grid-row:2;grid-row:2}}.wp-block-navigation:not(.has-background) .wp-block-navigation__container .wp-block-navigation-link:not(.has-text-color){color:#1e1e1e}.wp-block-navigation:not(.has-background) .wp-block-navigation__container .wp-block-navigation__container{background-color:#fff}.items-justified-left>ul{justify-content:flex-start}.items-justified-center>ul{justify-content:center}.items-justified-right>ul{justify-content:flex-end}.wp-block-navigation-link{display:flex;align-items:center;position:relative;margin:0}.wp-block-navigation-link .wp-block-navigation__container:empty{display:none}.wp-block-navigation__container{list-style:none;margin:0;padding-left:0;display:flex;flex-wrap:wrap}.is-vertical .wp-block-navigation__container{display:block}.has-child>.wp-block-navigation-link__content{padding-right:.5em}.has-child .wp-block-navigation__container{border:1px solid rgba(0,0,0,.15);background-color:inherit;color:inherit;position:absolute;left:0;top:100%;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;z-index:2;opacity:0;transition:opacity .1s linear;visibility:hidden}.has-child .wp-block-navigation__container>.wp-block-navigation-link>.wp-block-navigation-link__content{flex-grow:1}.has-child .wp-block-navigation__container>.wp-block-navigation-link>.wp-block-navigation-link__submenu-icon{padding-right:.5em}@media (min-width:782px){.has-child .wp-block-navigation__container{left:1.5em}.has-child .wp-block-navigation__container .wp-block-navigation__container{left:100%;top:-1px}.has-child .wp-block-navigation__container .wp-block-navigation__container:before{content:"";position:absolute;right:100%;height:100%;display:block;width:.5em;background:transparent}.has-child .wp-block-navigation__container .wp-block-navigation-link__submenu-icon svg{transform:rotate(0)}}.has-child:hover{cursor:pointer}.has-child:hover>.wp-block-navigation__container{visibility:visible;opacity:1;display:flex;flex-direction:column}.has-child:focus-within{cursor:pointer}.has-child:focus-within>.wp-block-navigation__container{visibility:visible;opacity:1;display:flex;flex-direction:column}.wp-block-navigation-link__content{color:inherit;text-decoration:none;padding:.5em 1em}.wp-block-navigation-link__content+.wp-block-navigation-link__content{padding-top:0}.has-text-color .wp-block-navigation-link__content{color:inherit}.wp-block-navigation-link__label{word-break:normal;overflow-wrap:break-word}.wp-block-navigation-link__submenu-icon{height:inherit;padding:.375em 1em .375em 0}.wp-block-navigation-link__submenu-icon svg{fill:currentColor}@media (min-width:782px){.wp-block-navigation-link__submenu-icon svg{transform:rotate(90deg)}}.is-small-text{font-size:.875em}.is-regular-text{font-size:1em}.is-large-text{font-size:2.25em}.is-larger-text{font-size:3em}.has-drop-cap:not(:focus):first-letter{float:left;font-size:8.4em;line-height:.68;font-weight:100;margin:.05em .1em 0 0;text-transform:uppercase;font-style:normal}p.has-background{padding:1.25em 2.375em}p.has-text-color a{color:inherit}.wp-block-post-author{display:flex;flex-wrap:wrap}.wp-block-post-author__byline{width:100%;margin-top:0;margin-bottom:0;font-size:.5em}.wp-block-post-author__avatar{margin-right:1em}.wp-block-post-author__bio{margin-bottom:.7em;font-size:.7em}.wp-block-post-author__content{flex-grow:1;flex-basis:0}.wp-block-post-author__name{font-weight:700;margin:0}.wp-block-pullquote{padding:3em 0;margin-left:0;margin-right:0;text-align:center}.wp-block-pullquote.alignleft,.wp-block-pullquote.alignright{max-width:290px}.wp-block-pullquote.alignleft p,.wp-block-pullquote.alignright p{font-size:1.25em}.wp-block-pullquote p{font-size:1.75em;line-height:1.6}.wp-block-pullquote cite,.wp-block-pullquote footer{position:relative}.wp-block-pullquote .has-text-color a{color:inherit}.wp-block-pullquote:not(.is-style-solid-color){background:none}.wp-block-pullquote.is-style-solid-color{border:none}.wp-block-pullquote.is-style-solid-color blockquote{margin-left:auto;margin-right:auto;text-align:left;max-width:60%}.wp-block-pullquote.is-style-solid-color blockquote p{margin-top:0;margin-bottom:0;font-size:2em}.wp-block-pullquote.is-style-solid-color blockquote cite{text-transform:none;font-style:normal}.wp-block-pullquote cite{color:inherit}.wp-block-quote.is-large,.wp-block-quote.is-style-large{margin-bottom:1em;padding:0 1em}.wp-block-quote.is-large p,.wp-block-quote.is-style-large p{font-size:1.5em;font-style:italic;line-height:1.6}.wp-block-quote.is-large cite,.wp-block-quote.is-large footer,.wp-block-quote.is-style-large cite,.wp-block-quote.is-style-large footer{font-size:1.125em;text-align:right}.wp-block-rss.alignleft{margin-right:2em}.wp-block-rss.alignright{margin-left:2em}.wp-block-rss.is-grid{display:flex;flex-wrap:wrap;padding:0;list-style:none}.wp-block-rss.is-grid li{margin:0 1em 1em 0;width:100%}@media (min-width:600px){.wp-block-rss.columns-2 li{width:calc(50% - 1em)}.wp-block-rss.columns-3 li{width:calc(33.33333% - 1em)}.wp-block-rss.columns-4 li{width:calc(25% - 1em)}.wp-block-rss.columns-5 li{width:calc(20% - 1em)}.wp-block-rss.columns-6 li{width:calc(16.66667% - 1em)}}.wp-block-rss__item-author,.wp-block-rss__item-publish-date{display:block;color:#555;font-size:.8125em}.wp-block-search .wp-block-search__inside-wrapper{display:flex;flex:auto;flex-wrap:nowrap;max-width:100%}.wp-block-search .wp-block-search__label{width:100%}.wp-block-search .wp-block-search__input{flex-grow:1;min-width:3em;border:1px solid #949494}.wp-block-search .wp-block-search__button{margin-left:.625em;word-break:normal}.wp-block-search .wp-block-search__button svg{min-width:1.5em;min-height:1.5em}.wp-block-search.wp-block-search__button-only .wp-block-search__button{margin-left:0}.wp-block-search.wp-block-search__button-inside .wp-block-search__inside-wrapper{padding:4px;border:1px solid #949494}.wp-block-search.wp-block-search__button-inside .wp-block-search__inside-wrapper .wp-block-search__input{border-radius:0;border:none;padding:0 0 0 .25em}.wp-block-search.wp-block-search__button-inside .wp-block-search__inside-wrapper .wp-block-search__input:focus{outline:none}.wp-block-search.wp-block-search__button-inside .wp-block-search__inside-wrapper .wp-block-search__button{padding:.125em .5em}.wp-block-separator.is-style-wide{border-bottom-width:1px}.wp-block-separator.is-style-dots{background:none!important;border:none;text-align:center;max-width:none;line-height:1;height:auto}.wp-block-separator.is-style-dots:before{content:"\00b7 \00b7 \00b7";color:currentColor;font-size:1.5em;letter-spacing:2em;padding-left:2em;font-family:serif}.wp-block-custom-logo .aligncenter{display:table}.wp-block-social-links{display:flex;flex-wrap:wrap;justify-content:flex-start;padding-left:0;padding-right:0;text-indent:0;margin-left:0}.wp-block-social-links .wp-social-link a,.wp-block-social-links .wp-social-link a:hover{text-decoration:none;border-bottom:0;box-shadow:none}.wp-social-link{display:block;width:36px;height:36px;border-radius:9999px;margin:0 8px 8px 0;transition:transform .1s ease}@media (prefers-reduced-motion:reduce){.wp-social-link{transition-duration:0s}}.wp-social-link a{padding:6px;display:block;line-height:0;transition:transform .1s ease}.wp-social-link a,.wp-social-link a:active,.wp-social-link a:hover,.wp-social-link a:visited,.wp-social-link svg{color:currentColor;fill:currentColor}.wp-social-link:hover{transform:scale(1.1)}.wp-block-social-links.aligncenter{justify-content:center;display:flex}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link{background-color:#f0f0f0;color:#444}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-amazon{background-color:#f90;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-bandcamp{background-color:#1ea0c3;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-behance{background-color:#0757fe;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-codepen{background-color:#1e1f26;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-deviantart{background-color:#02e49b;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-dribbble{background-color:#e94c89;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-dropbox{background-color:#4280ff;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-etsy{background-color:#f45800;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-facebook{background-color:#1778f2;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-fivehundredpx{background-color:#000;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-flickr{background-color:#0461dd;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-foursquare{background-color:#e65678;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-github{background-color:#24292d;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-goodreads{background-color:#eceadd;color:#382110}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-google{background-color:#ea4434;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-instagram{background-color:#f00075;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-lastfm{background-color:#e21b24;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-linkedin{background-color:#0d66c2;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-mastodon{background-color:#3288d4;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-medium{background-color:#02ab6c;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-meetup{background-color:#f6405f;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-pinterest{background-color:#e60122;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-pocket{background-color:#ef4155;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-reddit{background-color:#fe4500;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-skype{background-color:#0478d7;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-snapchat{background-color:#fefc00;color:#fff;stroke:#000}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-soundcloud{background-color:#ff5600;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-spotify{background-color:#1bd760;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-tumblr{background-color:#011835;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-twitch{background-color:#6440a4;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-twitter{background-color:#1da1f2;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-vimeo{background-color:#1eb7ea;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-vk{background-color:#4680c2;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-wordpress{background-color:#3499cd;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-yelp{background-color:#d32422;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-youtube{background-color:red;color:#fff}.wp-block-social-links.is-style-logos-only .wp-social-link{background:none;padding:4px}.wp-block-social-links.is-style-logos-only .wp-social-link svg{width:28px;height:28px}.wp-block-social-links.is-style-logos-only .wp-social-link-amazon{color:#f90}.wp-block-social-links.is-style-logos-only .wp-social-link-bandcamp{color:#1ea0c3}.wp-block-social-links.is-style-logos-only .wp-social-link-behance{color:#0757fe}.wp-block-social-links.is-style-logos-only .wp-social-link-codepen{color:#1e1f26}.wp-block-social-links.is-style-logos-only .wp-social-link-deviantart{color:#02e49b}.wp-block-social-links.is-style-logos-only .wp-social-link-dribbble{color:#e94c89}.wp-block-social-links.is-style-logos-only .wp-social-link-dropbox{color:#4280ff}.wp-block-social-links.is-style-logos-only .wp-social-link-etsy{color:#f45800}.wp-block-social-links.is-style-logos-only .wp-social-link-facebook{color:#1778f2}.wp-block-social-links.is-style-logos-only .wp-social-link-fivehundredpx{color:#000}.wp-block-social-links.is-style-logos-only .wp-social-link-flickr{color:#0461dd}.wp-block-social-links.is-style-logos-only .wp-social-link-foursquare{color:#e65678}.wp-block-social-links.is-style-logos-only .wp-social-link-github{color:#24292d}.wp-block-social-links.is-style-logos-only .wp-social-link-goodreads{color:#382110}.wp-block-social-links.is-style-logos-only .wp-social-link-google{color:#ea4434}.wp-block-social-links.is-style-logos-only .wp-social-link-instagram{color:#f00075}.wp-block-social-links.is-style-logos-only .wp-social-link-lastfm{color:#e21b24}.wp-block-social-links.is-style-logos-only .wp-social-link-linkedin{color:#0d66c2}.wp-block-social-links.is-style-logos-only .wp-social-link-mastodon{color:#3288d4}.wp-block-social-links.is-style-logos-only .wp-social-link-medium{color:#02ab6c}.wp-block-social-links.is-style-logos-only .wp-social-link-meetup{color:#f6405f}.wp-block-social-links.is-style-logos-only .wp-social-link-pinterest{color:#e60122}.wp-block-social-links.is-style-logos-only .wp-social-link-pocket{color:#ef4155}.wp-block-social-links.is-style-logos-only .wp-social-link-reddit{color:#fe4500}.wp-block-social-links.is-style-logos-only .wp-social-link-skype{color:#0478d7}.wp-block-social-links.is-style-logos-only .wp-social-link-snapchat{color:#fff;stroke:#000}.wp-block-social-links.is-style-logos-only .wp-social-link-soundcloud{color:#ff5600}.wp-block-social-links.is-style-logos-only .wp-social-link-spotify{color:#1bd760}.wp-block-social-links.is-style-logos-only .wp-social-link-tumblr{color:#011835}.wp-block-social-links.is-style-logos-only .wp-social-link-twitch{color:#6440a4}.wp-block-social-links.is-style-logos-only .wp-social-link-twitter{color:#1da1f2}.wp-block-social-links.is-style-logos-only .wp-social-link-vimeo{color:#1eb7ea}.wp-block-social-links.is-style-logos-only .wp-social-link-vk{color:#4680c2}.wp-block-social-links.is-style-logos-only .wp-social-link-wordpress{color:#3499cd}.wp-block-social-links.is-style-logos-only .wp-social-link-yelp{background-color:#d32422;color:#fff}.wp-block-social-links.is-style-logos-only .wp-social-link-youtube{color:red}.wp-block-social-links.is-style-pill-shape .wp-social-link{width:auto}.wp-block-social-links.is-style-pill-shape .wp-social-link a{padding-left:16px;padding-right:16px}.wp-block-spacer{clear:both}p.wp-block-subhead{font-size:1.1em;font-style:italic;opacity:.75}.wp-block-table{overflow-x:auto}.wp-block-table table{width:100%}.wp-block-table .has-fixed-layout{table-layout:fixed;width:100%}.wp-block-table .has-fixed-layout td,.wp-block-table .has-fixed-layout th{word-break:break-word}.wp-block-table.aligncenter,.wp-block-table.alignleft,.wp-block-table.alignright{display:table;width:auto}.wp-block-table.aligncenter td,.wp-block-table.aligncenter th,.wp-block-table.alignleft td,.wp-block-table.alignleft th,.wp-block-table.alignright td,.wp-block-table.alignright th{word-break:break-word}.wp-block-table .has-subtle-light-gray-background-color{background-color:#f3f4f5}.wp-block-table .has-subtle-pale-green-background-color{background-color:#e9fbe5}.wp-block-table .has-subtle-pale-blue-background-color{background-color:#e7f5fe}.wp-block-table .has-subtle-pale-pink-background-color{background-color:#fcf0ef}.wp-block-table.is-style-stripes{border-spacing:0;border-collapse:inherit;background-color:transparent;border-bottom:1px solid #f0f0f0}.wp-block-table.is-style-stripes tbody tr:nth-child(odd){background-color:#f0f0f0}.wp-block-table.is-style-stripes.has-subtle-light-gray-background-color tbody tr:nth-child(odd){background-color:#f3f4f5}.wp-block-table.is-style-stripes.has-subtle-pale-green-background-color tbody tr:nth-child(odd){background-color:#e9fbe5}.wp-block-table.is-style-stripes.has-subtle-pale-blue-background-color tbody tr:nth-child(odd){background-color:#e7f5fe}.wp-block-table.is-style-stripes.has-subtle-pale-pink-background-color tbody tr:nth-child(odd){background-color:#fcf0ef}.wp-block-table.is-style-stripes td,.wp-block-table.is-style-stripes th{border-color:transparent}.wp-block-text-columns,.wp-block-text-columns.aligncenter{display:flex}.wp-block-text-columns .wp-block-column{margin:0 1em;padding:0}.wp-block-text-columns .wp-block-column:first-child{margin-left:0}.wp-block-text-columns .wp-block-column:last-child{margin-right:0}.wp-block-text-columns.columns-2 .wp-block-column{width:50%}.wp-block-text-columns.columns-3 .wp-block-column{width:33.33333%}.wp-block-text-columns.columns-4 .wp-block-column{width:25%}.wp-block-video{margin-left:0;margin-right:0}.wp-block-video video{max-width:100%}@supports ((position:-webkit-sticky) or (position:sticky)){.wp-block-video [poster]{object-fit:cover}}.wp-block-video.aligncenter{text-align:center}.wp-block-video figcaption{margin-top:.5em;margin-bottom:1em}.wp-block-post-featured-image a{display:inline-block}:root .has-pale-pink-background-color{background-color:#f78da7}:root .has-vivid-red-background-color{background-color:#cf2e2e}:root .has-luminous-vivid-orange-background-color{background-color:#ff6900}:root .has-luminous-vivid-amber-background-color{background-color:#fcb900}:root .has-light-green-cyan-background-color{background-color:#7bdcb5}:root .has-vivid-green-cyan-background-color{background-color:#00d084}:root .has-pale-cyan-blue-background-color{background-color:#8ed1fc}:root .has-vivid-cyan-blue-background-color{background-color:#0693e3}:root .has-vivid-purple-background-color{background-color:#9b51e0}:root .has-white-background-color{background-color:#fff}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-cyan-bluish-gray-background-color{background-color:#abb8c3}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-black-background-color{background-color:#000}:root .has-pale-pink-color{color:#f78da7}:root .has-vivid-red-color{color:#cf2e2e}:root .has-luminous-vivid-orange-color{color:#ff6900}:root .has-luminous-vivid-amber-color{color:#fcb900}:root .has-light-green-cyan-color{color:#7bdcb5}:root .has-vivid-green-cyan-color{color:#00d084}:root .has-pale-cyan-blue-color{color:#8ed1fc}:root .has-vivid-cyan-blue-color{color:#0693e3}:root .has-vivid-purple-color{color:#9b51e0}:root .has-white-color{color:#fff}:root .has-very-light-gray-color{color:#eee}:root .has-cyan-bluish-gray-color{color:#abb8c3}:root .has-very-dark-gray-color{color:#313131}:root .has-black-color{color:#000}:root .has-vivid-cyan-blue-to-vivid-purple-gradient-background{background:linear-gradient(135deg,#0693e3,#9b51e0)}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-light-green-cyan-to-vivid-green-cyan-gradient-background{background:linear-gradient(135deg,#7adcb4,#00d082)}:root .has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background:linear-gradient(135deg,#fcb900,#ff6900)}:root .has-luminous-vivid-orange-to-vivid-red-gradient-background{background:linear-gradient(135deg,#ff6900,#cf2e2e)}:root .has-very-light-gray-to-cyan-bluish-gray-gradient-background{background:linear-gradient(135deg,#eee,#a9b8c3)}:root .has-cool-to-warm-spectrum-gradient-background{background:linear-gradient(135deg,#4aeadc,#9778d1 20%,#cf2aba 40%,#ee2c82 60%,#fb6962 80%,#fef84c)}:root .has-blush-light-purple-gradient-background{background:linear-gradient(135deg,#ffceec,#9896f0)}:root .has-blush-bordeaux-gradient-background{background:linear-gradient(135deg,#fecda5,#fe2d2d 50%,#6b003e)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-luminous-dusk-gradient-background{background:linear-gradient(135deg,#ffcb70,#c751c0 50%,#4158d0)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-pale-ocean-gradient-background{background:linear-gradient(135deg,#fff5cb,#b6e3d4 50%,#33a7b5)}:root .has-electric-grass-gradient-background{background:linear-gradient(135deg,#caf880,#71ce7e)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root .has-link-color a{color:#00e;color:var(--wp--style--color--link,#00e)}.has-small-font-size{font-size:.8125em}.has-normal-font-size,.has-regular-font-size{font-size:1em}.has-medium-font-size{font-size:1.25em}.has-large-font-size{font-size:2.25em}.has-huge-font-size,.has-larger-font-size{font-size:2.625em}.has-text-align-center{text-align:center}.has-text-align-left{text-align:left}.has-text-align-right{text-align:right}#end-resizable-editor-section{display:none}.aligncenter{clear:both} + diff --git a/wp-content/themes/tortuga-child/style.css?ver=2.1.3 b/wp-content/themes/tortuga-child/style.css?ver=2.1.3 new file mode 100644 index 0000000..6f433e8 --- /dev/null +++ b/wp-content/themes/tortuga-child/style.css?ver=2.1.3 @@ -0,0 +1,3617 @@ +/* +Theme Name: Tortuga Child +Theme URI: +Author: +Author URI: +Description: Child theme for Tortuga. +Template: tortuga +Version: 2.1.3 +Requires at least: +Tested up to: +Requires PHP: +AMP: true +License: GNU General Public License v2 or later +License URI: http://www.gnu.org/licenses/gpl-2.0.html +Text Domain: tortuga +Tags: two-columns, custom-background, custom-header, custom-logo, custom-menu, editor-style, block-styles, rtl-language-support, grid-layout, blog, entertainment, news, featured-image-header, featured-images, flexible-header, custom-colors, full-width-template, sticky-post, threaded-comments, translation-ready, theme-options, one-column, left-sidebar, right-sidebar, three-columns + +This theme, like WordPress, is licensed under the GPL. +Use it to make something cool, have fun, and share what you've learned with others. + +Tortuga is based on Underscores http://underscores.me/, (C) 2012-2015 Automattic, Inc. + +Normalizing styles have been helped along thanks to the fine work of +Nicolas Gallagher and Jonathan Neal http://necolas.github.com/normalize.css/ +*/ + +/*-------------------------------------------------------------- +>>> TABLE OF CONTENTS: +---------------------------------------------------------------- +# - CSS Variables +# - Normalize +# - Typography +# - Elements +# - Forms +# - Accessibility +# - Alignments +# - Clearings +# - Site Layout +# - Header +# - Navigation +# - Social Icons Menu +# - Posts and pages +# - Archives and Blog Layouts +# - Blocks +# - Featured Posts +# - Widgets +# - Magazine Widgets +# - Comments +# - Media +# - Footer +# - Plugins +# - Media Queries for Typography +# - Media Queries for Layout +# - Media Queries for Navigation +# - Media Queries for Featured Posts +# - Media Queries for Media +# - Theme Options +--------------------------------------------------------------*/ + +/*-------------------------------------------------------------- +# - CSS Variables + --text-font: "OpenDyslexic", "Open Sans", arial, helvetica, sans-serif; + --title-font: "OpenDyslexic", "Titillium Web", arial, helvetica, sans-serif; + --navi-font: "OpenDyslexic", "Titillium Web", arial, helvetica, sans-serif; + --widget-title-font: "OpenDyslexic", "Titillium Web", arial, helvetica, sans-serif; +--------------------------------------------------------------*/ +:root { + --text-font: "OpenDyslexic", "Open Sans", arial, helvetica, sans-serif; + --title-font: "OpenDyslexic", "Titillium Web", arial, helvetica, sans-serif; + --navi-font: "OpenDyslexic", "Titillium Web", arial, helvetica, sans-serif; + --widget-title-font: "OpenDyslexic", "Titillium Web", arial, helvetica, sans-serif; + --title-font-weight: normal; + --navi-font-weight: normal; + --widget-title-font-weight: normal; + --title-text-transform: normal; + --navi-text-transform: normal; + --widget-title-text-transform: normal; + --text-line-height: 1.75; + --title-line-height: 1.4; +} + +/*-------------------------------------------------------------- +# - Normalize +--------------------------------------------------------------*/ +html { + font-family: sans-serif; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +body { + margin: 0; +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +main, +menu, +nav, +section, +summary { + display: block; +} + +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline; +} + +audio:not([controls]) { + display: none; + height: 0; +} + +[hidden], +template { + display: none; +} + +a { + background-color: transparent; +} + +a:active, +a:hover { + outline: 0; +} + +abbr[title] { + border-bottom: 1px dotted; +} + +b, +strong { + font-weight: bold; +} + +dfn { + font-style: italic; +} + +mark { + background: #ff0; + color: #000; +} + +small { + font-size: 80%; +} + +sub, +sup { + position: relative; + vertical-align: baseline; + font-size: 75%; + line-height: 0; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + border: 0; +} + +svg:not(:root) { + overflow: hidden; +} + +figure { + margin: 1em 40px; +} + +hr { + box-sizing: content-box; + height: 0; + width: 100%; +} + +code, +kbd, +pre, +samp { + font-size: 1em; + font-family: monospace, monospace; +} + +button, +input, +optgroup, +select, +textarea { + margin: 0; + color: inherit; + font: inherit; +} + +button { + overflow: visible; +} + +button, +select { + text-transform: none; +} + +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} + +button[disabled], +html input[disabled] { + cursor: default; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} + +input { + line-height: normal; +} + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; + padding: 0; +} + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +input[type="search"] { + box-sizing: content-box; + -webkit-appearance: textfield; +} + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +fieldset { + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; + border: 1px solid #c0c0c0; +} + +legend { + padding: 0; + border: 0; +} + +textarea { + overflow: auto; +} + +optgroup { + font-weight: bold; +} + +table { + border-spacing: 0; + border-collapse: collapse; +} + +td, +th { + padding: 0; +} + +/*-------------------------------------------------------------- +# - Typography +--------------------------------------------------------------*/ +body, +button, +input, +select, +textarea { + color: #20745E; + font-size: 17px; + font-size: 1.0625rem; + font-family: "Open Sans", arial, helvetica, sans-serif; + font-family: var(--text-font); + line-height: 1.75; + line-height: var(--text-line-height); +} + +h1, +h2, +h3, +h4, +h5, +h6 { + clear: both; + margin: 0.75em 0; + line-height: 1.4; + line-height: var(--title-line-height); +} + +h1 { + font-size: 36px; + font-size: 2.25rem; +} + +h2 { + font-size: 28px; + font-size: 1.75rem; +} + +h3 { + font-size: 24px; + font-size: 1.5rem; +} + +h4 { + font-size: 22px; + font-size: 1.375rem; +} + +h5 { + font-size: 20px; + font-size: 1.25rem; +} + +h6 { + font-size: 19px; + font-size: 1.1875rem; +} + +p { + margin-bottom: 1.5em; +} + +dfn, +cite, +em, +i { + font-style: italic; +} + +blockquote { + margin: 0 1.5em; +} + +address { + margin: 0 0 1.5em; +} + +pre { + overflow: auto; + margin-bottom: 1.5em; + padding: 1.5em; + max-width: 100%; + border: 1px solid #e5e5e5; + background: #f5f5f5; + font-size: 15px; + font-size: 0.9375rem; + font-family: "Courier 10 Pitch", Courier, monospace; + line-height: 1.6; +} + +code, +kbd, +tt, +var { + font-size: 15px; + font-size: 0.9375rem; + font-family: Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace; +} + +abbr, +acronym { + border-bottom: 1px dotted #666; + cursor: help; +} + +mark, +ins { + text-decoration: none; +} + +big { + font-size: 125%; +} + +/*-------------------------------------------------------------- +# - Elements +--------------------------------------------------------------*/ +html { + box-sizing: border-box; +} + +/* Inherit box-sizing to make it easier to change the property for components that leverage other behavior; see http://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/ */ +*, +*::before, +*::after { + box-sizing: inherit; +} + +body { + background: #ddd; /* Fallback for when there is no custom background color defined. */ +} + +blockquote { + margin: 0 0 1.5em; + padding: 0.05em 1.25em 1em; + border: 1px solid #ddd; + border-left: 3px solid #20745D; + color: #777; + font-style: italic; + font-size: 18px; + font-size: 1.125rem; +} + +blockquote cite, +blockquote small { + display: block; + margin-top: 1em; + color: #404040; + font-size: 16px; + font-size: 1rem; + line-height: 1.75; +} + +blockquote cite:before, +blockquote small:before { + content: "\2014\00a0"; +} + +blockquote em, +blockquote i, +blockquote cite { + font-style: normal; +} + +blockquote > :last-child { + margin-bottom: 0.5em; +} + +hr { + margin-bottom: 1.5em; + height: 1px; + border: 0; + background-color: #ddd; +} + +ul, +ol { + margin: 0 0 1.5em; + padding: 0 0 0 1.25em; +} + +ul { + list-style: disc; +} + +ol { + list-style: decimal; +} + +li > ul, +li > ol { + margin-bottom: 0; + margin-left: 1.5em; +} + +dt { + font-weight: bold; +} + +dd { + margin: 0 0 1.5em; +} + +img { + max-width: 100%; /* Adhere to container width. */ + height: auto; /* Make sure images are scaled correctly. */ + margin-top: 1em; + margin-right: 1em; + margin-bottom: 1em; +} + +table { + margin: 0 0 1.5em; + width: 100%; + border: none; + table-layout: fixed; +} + +th, +td { + padding: 0.3em 0.6em; + border: 1px solid #ddd; +} + +a { + color: #20745D; + text-decoration: none; +} + +a:link, +a:visited { + color: rgb(130, 160, 131); +} + +a:hover, +a:focus, +a:active { + color: #20745D; +} + +a:focus { + outline: thin dotted; +} + +a:hover, +a:active { + outline: 0; +} + +/*-------------------------------------------------------------- +# - Forms +--------------------------------------------------------------*/ +button, +input[type="button"], +input[type="reset"], +input[type="submit"] { + margin: 0; + padding: 0.6em 1em; + border: none; + background: #20745D; + color: #fff; + text-decoration: none; + font-size: 17px; + font-size: 1.0625rem; + transition: all 0.2s ease; +} + +button:hover, +input[type="button"]:hover, +input[type="reset"]:hover, +input[type="submit"]:hover, +button:focus, +input[type="button"]:focus, +input[type="reset"]:focus, +input[type="submit"]:focus, +button:active, +input[type="button"]:active, +input[type="reset"]:active, +input[type="submit"]:active { + background: #20745E; +} + +input[type="text"], +input[type="email"], +input[type="url"], +input[type="password"], +input[type="search"], +textarea { + padding: 0.3em 0.6em; + max-width: 100%; + border: 1px solid #ddd; + color: #666; +} + +input[type="text"]:focus, +input[type="email"]:focus, +input[type="url"]:focus, +input[type="password"]:focus, +input[type="search"]:focus, +textarea:focus { + border: 1px solid #ccc; + color: rgb(130, 160, 131); +} + +textarea { + width: 100%; +} + +/*-------------------------------------------------------------- +# - Accessibility +--------------------------------------------------------------*/ + +/* Text meant only for screen readers. */ +.screen-reader-text { + position: absolute !important; + overflow: hidden; + clip: rect(1px, 1px, 1px, 1px); + width: 1px; + height: 1px; +} + +.screen-reader-text:hover, +.screen-reader-text:active, +.screen-reader-text:focus { + top: 5px; + left: 5px; + z-index: 100000; /* Above WP toolbar. */ + display: block; + clip: auto !important; + padding: 15px 23px 14px; + width: auto; + height: auto; + border-radius: 3px; + background-color: #f1f1f1; + box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6); + color: #21759b; + text-decoration: none; + font-weight: bold; + font-size: 14px; + font-size: 0.875rem; + line-height: normal; +} + +/*-------------------------------------------------------------- +# - Alignments +--------------------------------------------------------------*/ +.alignleft { + float: left; + margin-right: 1.5em; +} + +.alignright { + float: right; + margin-left: 1.5em; +} + +.aligncenter { + display: block; + clear: both; + margin-right: auto; + margin-left: auto; + text-align: center; +} + +/*-------------------------------------------------------------- +# - Clearings +--------------------------------------------------------------*/ +.clearfix:before, +.clearfix:after, +.post-navigation .nav-links:before, +.post-navigation .nav-links:after, +.comment-navigation:before, +.comment-navigation:after { + display: table; + content: ""; +} + +.clearfix:after, +.post-navigation .nav-links:after, +.comment-navigation:after { + clear: both; +} + +/*-------------------------------------------------------------- +# - Site Layout +--------------------------------------------------------------*/ +.site { + margin: 0; + width: 100%; +} + +.container { + margin: 0 auto; + padding: 0 2rem; + max-width: 1320px; + width: 100%; +} + +.site-content { + padding-top: 2rem; +} + +.content-area { + float: left; + box-sizing: border-box; + padding-right: 2rem; + width: 73%; +} + +.sidebar { + float: right; + width: 27%; + background-color: #131516; + color: #d8d4cf; +} + +/* No Sidebar & Centered Layout Template */ +.no-sidebar .content-area, +.site-content .centered-content-area { + float: none; + margin: 0 auto; + padding: 0; + max-width: 86%; + width: 100%; +} + +.post-layout-three-columns .content-archive { + max-width: 100%; +} + +/* Fullwidth Template */ +.site-content .fullwidth-content-area { + float: none; + margin: 0; + padding: 0; + max-width: 100%; + width: 100%; +} + +/*-------------------------------------------------------------- +# - Header +--------------------------------------------------------------*/ +.site-header { + background: #20745E; + color: #fff; +} + +.header-main { + padding-top: 0; + padding-bottom: 0; + display: flex; + justify-content: center; + align-content: center; +} + +.site-branding { + float: left; + margin: 1em 0; + padding: 0; + max-width: 100%; +} + +.site-branding a:link, +.site-branding a:visited, +.site-branding a:hover { + padding: 0; + border: none; + text-decoration: none; +} + +.site-title { + display: inline-block; + margin: 0.15em 0; + padding: 0; + color: #fff; + text-decoration: none; + font-size: 36px; + font-size: 2.25rem; + font-family: "Titillium Web", arial, helvetica, sans-serif; + font-family: var(--title-font); + font-weight: normal; + font-weight: var(--title-font-weight); + text-transform: uppercase; + text-transform: var(--title-text-transform); + line-height: 1.4; + line-height: var(--title-line-height); +} + +.site-title a:link, +.site-title a:visited { + color: #fff; + transition: all 0.2s ease; +} + +.site-title a:hover, +.site-title a:active { + color: rgba(255, 255, 255, 0.6); +} + +.site-branding .custom-logo { + float: left; + margin: 0.5em 1em 0 0; + padding: 0; + max-width: 100%; + height: auto; + border: none; + vertical-align: top; +} + +.site-description { + margin: 0 0 0.75em; + font-size: 15px; + font-size: 0.9375rem; +} + +/* Header Widgets */ +.header-widgets { + display: inline; +} + +.header-widget { + float: right; + margin: 0.5em 0 0 1.5em; +} + +.header-widget ul { + margin: 0; + padding: 0; +} + +.header-widget-title { + margin: 0 0 0.5em; +} + +/* Custom Header Image */ +.header-image { + text-align: center; +} + +.header-image img { + max-width: 1920px; + width: 100%; + height: auto; + vertical-align: top; +} + +/*-------------------------------------------------------------- +# - Navigation +--------------------------------------------------------------*/ +.primary-navigation-wrap { + border-bottom: 5px solid #20745D; + background: rgba(0, 0, 0, 0.15); + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.05); + color: #fff; +} + +.primary-navigation-container { + position: relative; +} + +.primary-navigation { + position: relative; + width: 100%; + display: flex; + justify-content: center; + align-content: center; +} + +/* Hide the menu on small screens when JavaScript is available. */ +/* +.main-navigation ul, +.main-navigation .menu-item-has-children > a > .icon, +.main-navigation ul a > .icon { + display: none; +} +*/ +button.menu-toggle { + display: none; +} + +.main-navigation.toggled-on > ul.menu { + display: block; +} + +/* Main Navigation Toggle */ +.primary-menu-toggle { + display: flex; + margin: 0; + padding: 0.8em 1.2em; + border: none; + background: #20745D; + color: #fff; + text-decoration: none; + font-size: 16px; + font-size: 1rem; + font-family: "Titillium Web", arial, helvetica, sans-serif; + font-family: var(--navi-font); + font-weight: normal; + font-weight: var(--navi-font-weight); + text-transform: uppercase; + text-transform: var(--navi-text-transform); + text-align: left; + transition: all 0.2s ease; + align-items: center; +} + +.primary-menu-toggle:focus { + outline: thin dotted; + color: #fff; + background: #20745D; +} + +.primary-menu-toggle:hover, +.primary-menu-toggle:active { + color: rgba(255, 255, 255, 0.5); + background: #20745D; + cursor: pointer; +} + +.primary-menu-toggle .icon { + margin: 0; + width: 24px; + height: 24px; + vertical-align: top; + fill: #fff; +} + +.primary-menu-toggle[aria-expanded="true"] .icon-menu, +.primary-menu-toggle[aria-expanded="false"] .icon-close { + display: none; +} + +.primary-menu-toggle[aria-expanded="true"] .icon-close { + display: inline-block; +} + +/* Menu Items Styling */ +.main-navigation ul { + margin: 0; + padding: 0; + color: #fff; + list-style: none; + font-size: 16px; + font-size: 1rem; + font-family: "Titillium Web", arial, helvetica, sans-serif; + font-family: var(--navi-font); + font-weight: normal; + font-weight: var(--navi-font-weight); + text-transform: uppercase; + text-transform: var(--navi-text-transform); +} + +.main-navigation > ul { + padding: 3px 0; + border-top: 5px solid #20745D; +} + +.main-navigation ul li { + position: relative; + margin: 0; + float: left; +} + +.main-navigation ul a { + display: block; + margin: 0; + padding: 0.5em; + border-bottom: 1px dotted rgba(255, 255, 255, 0.2); + text-decoration: none; +} + +.main-navigation ul li:last-child > a { + border-bottom: none; +} + +.main-navigation ul a, +.main-navigation ul a:link, +.main-navigation ul a:visited { + color: #fff; + text-decoration: none; + transition: all 0.2s ease; +} + +.main-navigation ul a:hover, +.main-navigation ul a:active, +.main-navigation ul a:focus { + background-color: #20745D; +} + +.main-navigation ul li.current-menu-item > a { + background-color: #20745D; +} + +/* Submenus */ +.main-navigation ul ul { + font-size: 13px; + font-size: 0.8125rem; +} + +.is-amp-page .main-navigation ul button.toggled-on + ul, +.main-navigation ul ul.toggled-on { + display: block; +} + +.main-navigation ul ul a { + padding-left: 3em; +} + +.main-navigation ul ul ul a { + padding-left: 4.5em; +} + +.main-navigation ul ul ul ul a { + padding-left: 6em; +} + +/* Submenu Dropdown Toggles */ +.main-navigation .dropdown-toggle { + position: absolute; + display: block; + top: 0; + right: 0; + padding: 0.9em 1.5em; + background: none; + border: none; +} + +.main-navigation .dropdown-toggle:focus { + outline: thin dotted; + color: #fff; + background: none; +} + +.main-navigation .dropdown-toggle:hover, +.main-navigation .dropdown-toggle:active { + background-color: #20745D; +} + +.main-navigation .dropdown-toggle .icon { + margin: 0.2em 0 0; + width: 20px; + height: 20px; + vertical-align: top; + fill: #131516; +} + +.main-navigation .dropdown-toggle.toggled-on .icon { + -ms-transform: rotate(-180deg); /* IE 9 */ + -webkit-transform: rotate(-180deg); /* Chrome, Safari, Opera */ + transform: rotate(-180deg); +} + +.main-navigation ul ul .dropdown-toggle { + padding: 0.6em 1.2em; +} + +.main-navigation ul ul .dropdown-toggle .icon { + width: 18px; + height: 18px; +} + +/*-------------------------------------------------------------- +# - Social Icons Menu +--------------------------------------------------------------*/ +.social-icons-menu { + margin: 0; + padding: 0; + list-style-position: outside; + list-style-type: none; + line-height: 1; +} + +.social-icons-menu li { + float: left; + margin: 0; + padding: 0; +} + +.social-icons-menu li * { + position: relative; + display: inline-block; + padding: 0.5em; + text-decoration: none; + color: #fff; +} + +.social-icons-menu li a .screen-reader-text { + display: none; +} + +/* Add Genericons */ +.social-icons-menu li a:before, li.social-icons-menu { + display: inline-block; + vertical-align: top; + text-decoration: inherit; + font-size: 16px; + font-family: 'Genericons'; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.social-icons-menu li a:before { + content: '\f408'; +} + +/* Default Icon */ +.social-icons-menu li a[href*="codepen.io"]:before { + content: '\f216'; +} + +.social-icons-menu li a[href*="digg.com"]:before { + content: '\f221'; +} + +.social-icons-menu li a[href*="dribbble.com"]:before { + content: '\f201'; +} + +.social-icons-menu li a[href*="facebook.com"]:before { + content: '\f204'; +} + +.social-icons-menu li a[href*="flickr.com"]:before { + content: '\f211'; +} + +.social-icons-menu li a[href*="plus.google.com"]:before { + content: '\f218'; +} + +.social-icons-menu li a[href*="github.com"]:before { + content: '\f200'; +} + +.social-icons-menu li a[href*="instagram.com"]:before { + content: '\f215'; +} + +.social-icons-menu li a[href*="linkedin.com"]:before { + content: '\f207'; +} + +.social-icons-menu li a[href*="pinterest.com"]:before { + content: '\f209'; +} + +.social-icons-menu li a[href*="polldaddy.com"]:before { + content: '\f217'; +} + +.social-icons-menu li a[href*="getpocket.com"]:before { + content: '\f224'; +} + +.social-icons-menu li a[href*="reddit.com"]:before { + content: '\f222'; +} + +.social-icons-menu li a[href*="spotify.com"]:before { + content: '\f515'; +} + +.social-icons-menu li a[href*="skype.com"]:before, +.social-icons-menu li a[href*="skype:"]:before { + content: '\f220'; +} + +.social-icons-menu li a[href*="stumbleupon.com"]:before { + content: '\f223'; +} + +.social-icons-menu li a[href*="tumblr.com"]:before { + content: '\f214'; +} + +.social-icons-menu li a[href*="twitch.tv"]:before { + content: '\f516'; +} + +.social-icons-menu li a[href*="twitter.com"]:before { + content: '\f202'; +} + +.social-icons-menu li a[href*="vimeo.com"]:before { + content: '\f212'; +} + +.social-icons-menu li a[href*="wordpress.org"]:before { + content: '\f205'; +} + +.social-icons-menu li a[href*="wordpress.com"]:before { + content: '\f205'; +} + +.social-icons-menu li a[href*="youtube.com"]:before { + content: '\f213'; +} + +.social-icons-menu li a[href*="newsletter"]:before, +.social-icons-menu li a[href*="mailto"]:before { + content: '\f410'; +} + +.social-icons-menu li a[href*="/feed"]:before, +.social-icons-menu li a[href*="/feed/"]:before, +.social-icons-menu li a[href*="?feed=rss2"]:before, +.social-icons-menu li a[href*="feedburner.google.com"]:before, +.social-icons-menu li a[href*="feedburner.com"]:before { + content: '\f413'; +} + +/*-------------------------------------------------------------- +# - Posts and pages +--------------------------------------------------------------*/ +.type-post, +.type-page, +.type-attachment, +.comments-area, +.site-main > article:not(.type-post):not(.type-page):not(.type-attachment), +.post-wrapper > .post-column > article:not(.type-post):not(.type-page):not(.type-attachment) { + margin: 0 0 2em 0; + padding: 1.5em; + max-width: 100%; + border-top: 3px solid #20745D; + background-color: #131516; + color: #d8d4cf; + box-shadow: 0 2px 2px #aaa; +} + +.archive-title, +.page-title, +.entry-title { + margin: 0; + padding: 0; + background-color: #131516; + color: #d8d4cf; + -ms-word-wrap: break-word; + word-wrap: break-word; + font-size: 28px; + font-size: 1.75rem; + font-family: "Titillium Web", arial, helvetica, sans-serif; + font-family: var(--title-font); + font-weight: normal; + font-weight: var(--title-font-weight); + text-transform: uppercase; + text-transform: var(--title-text-transform); + line-height: 1.4; + line-height: var(--title-line-height); +} + +.entry-title a:link, +.entry-title a:visited { + background-color: #131516; + color: rgb(130, 160, 131); + text-decoration: none; + transition: all 0.2s ease; +} + +.entry-title a:hover, +.entry-title a:active { + color: #20745E; +} + +.type-post .wp-post-image, +.type-page .wp-post-image, +.site-main > article:not(.type-post):not(.type-page):not(.type-attachment) .wp-post-image, +.post-wrapper > .post-column > article:not(.type-post):not(.type-page):not(.type-attachment) .wp-post-image { + margin: 0 0 0.5em; +} + +.entry-content a { + text-decoration: underline; +} + +.sticky { + border-width: 5px; +} + +/* Page Links | wp_link_pages() */ +.page-links { + margin: 0 0 1.5em; + word-spacing: 0.75em; + font-weight: bold; +} + +/* Entry Meta */ +.entry-meta { + margin: 0; + padding: 0; + color: rgb(130, 160, 131); + font-size: 14px; + font-size: 0.875rem; +} + +.entry-meta .meta-date, +.entry-meta .meta-author, +.entry-meta .meta-category, +.entry-meta .meta-comments { + margin-right: 1.5em; +} + +.entry-meta a:link, +.entry-meta a:visited { + color: rgb(130, 160, 131); +} + +.entry-meta a:hover, +.entry-meta a:active { + color: #20745D; +} + +.entry-meta span::before { + display: inline-block; + margin-right: 0.2em; + vertical-align: middle; + font: normal 16px 'Genericons'; + -webkit-font-smoothing: antialiased; +} + +.entry-meta .meta-date::before { + content: '\f307'; +} + +.entry-meta .meta-author::before { + content: '\f304'; +} + +.entry-meta .meta-category::before { + content: '\f301'; +} + +.entry-meta .meta-comments::before { + content: '\f300'; +} + +/* Hide post meta if they are deactivated in settings */ +body.date-hidden .type-post .entry-meta .meta-date, +body.author-hidden .type-post .entry-meta .meta-author, +body.categories-hidden .type-post .entry-meta .meta-category, +body.comments-hidden .type-post .entry-meta .meta-comments, +body.date-hidden .post-slider .entry-meta .meta-date, +body.author-hidden .post-slider .entry-meta .meta-author { + position: absolute; + clip: rect(1px, 1px, 1px, 1px); +} + +body.date-hidden.author-hidden.categories-hidden.comments-hidden .content-area .type-post .entry-meta { + display: none; +} + +/* Entry Tags & Tagcloud Widget */ +.entry-tags { + margin: 0 0 1.5em; +} + +.widget_tag_cloud .tagcloud, +.entry-tags .meta-tags { + font-size: 14px; + font-size: 0.875rem; +} + +.widget_tag_cloud .tagcloud::before, +.widget_tag_cloud .tagcloud::after, +.entry-tags .meta-tags::before, +.entry-tags .meta-tags::after { + display: table; + content: ""; +} + +.widget_tag_cloud .tagcloud::after, +.entry-tags .meta-tags::after { + clear: both; +} + +.widget_tag_cloud .tagcloud a, +.entry-tags .meta-tags a { + display: inline-block; + float: left; + margin: 0 2px 2px 0; + padding: 0.2em 0.5em; + background: #20745E; + text-decoration: none; + text-transform: uppercase; + font-size: 12px !important; + font-size: 0.75rem !important; +} + +.widget_tag_cloud .tagcloud a:link, +.widget_tag_cloud .tagcloud a:visited, +.entry-tags .meta-tags a:link, +.entry-tags .meta-tags a:visited { + color: #fff; + transition: all 0.2s ease; +} + +.widget_tag_cloud .tagcloud a:hover, +.widget_tag_cloud .tagcloud a:active, +.entry-tags .meta-tags a:hover, +.entry-tags .meta-tags a:active { + background: #20745D; + color: #fff; +} + +/* Read more Link */ +.more-link { + display: inline-block; + margin: 0; + padding: 0.6em 1em; + background: #20745D; + color: #fff; + text-decoration: none; + font-size: 15px; + font-size: 0.9375rem; + transition: all 0.2s ease; +} + +.more-link:link, +.more-link:visited { + color: #fff; +} + +.more-link:hover, +.more-link:active { + background: #20745E; + text-decoration: none; +} + +.more-link::after { + content: " \00BB"; +} + +/* Post Navigation */ +.post-navigation { + margin: 0; +} + +.post-navigation .nav-links .nav-previous { + float: left; +} + +.post-navigation .nav-links .nav-next { + float: right; +} + +.post-navigation .nav-links .nav-previous a::before { + margin-right: 3px; + content: "\00AB"; +} + +.post-navigation .nav-links .nav-next a::after { + margin-left: 4px; + content: "\00BB"; +} + +.post-navigation .nav-links a { + display: inline-block; + margin: 0 0 3px; + padding: 0.3em 0.8em; + background: #20745D; + color: #fff; + text-decoration: none; + font-size: 14px; + font-size: 0.875rem; + transition: all 0.2s ease; +} + +.post-navigation .nav-links a:link, +.post-navigation .nav-links a:visited { + color: #fff; +} + +.post-navigation .nav-links a:hover, +.post-navigation .nav-links a:active { + background: #20745E; +} + +/*-------------------------------------------------------------- +# - Archives and Blog Layouts +--------------------------------------------------------------*/ + +/* Archives and Search Heading */ +.page-header { + margin: 0 0 2em 0; + padding: 1.5em; + border-top: 3px solid #20745D; + background: #131516; + box-shadow: 0 2px 2px #aaa; +} + +.blog-description, +.archive-description p { + margin-bottom: 0; +} + +/* Post Columns */ +.post-layout-columns .post-wrapper { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -2em; +} + +.post-layout-columns .post-wrapper .post-column { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + box-sizing: border-box; + padding-right: 2em; +} + +.post-layout-columns .post-wrapper .post-column article { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; +} + +.post-layout-columns .post-wrapper .post-column article .entry-title { + font-size: 22px; + font-size: 1.375rem; +} + +.post-layout-columns .post-wrapper .post-column article .entry-content { + flex-grow: 1; + font-size: 16px; + font-size: 1rem; + -webkit-box-flex: 1; + -ms-flex-positive: 1; +} + +.post-layout-columns .post-wrapper .post-column article .more-link { + font-size: 15px; + font-size: 0.9375rem; +} + +/* 2 Columns */ +.post-layout-two-columns .post-wrapper .post-column { + width: 50%; +} + +/* 3 Columns */ +.post-layout-three-columns .content-archive { + float: none; + padding: 0; + width: 100%; +} + +.post-layout-three-columns .post-wrapper .post-column { + width: 33.3333333333333%; +} + +/* Post Columns Fixes for IE 10 and IE 11*/ +@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { + .post-layout-columns .post-wrapper .post-column, + .post-layout-columns .post-wrapper .post-column article { + display: block; + } +} + +/* Theme Pagination */ +.pagination { + margin: 0 0 2em; +} + +.pagination a, +.pagination .current { + display: inline-block; + margin: 0 3px 3px 0; + padding: 0.4em 1em; + background: #20745E; + color: #fff; + text-align: center; + text-decoration: none; +} + +.pagination a:link, +.pagination a:visited { + color: #fff; +} + +.pagination a:hover, +.pagination a:active, +.pagination .current { + background: #20745D; +} + +/* Infinite Scroll Pagination */ +.infinite-scroll .pagination { + display: none; +} + +.infinite-scroll #infinite-handle, +.infinite-scroll .infinite-loader { + width: 100%; + text-align: center; +} + +.infinite-scroll .infinite-loader .spinner { + bottom: -1em; + left: auto; + margin: 0 auto; +} + +.infinite-scroll #infinite-handle span { + display: inline-block; + margin: 0 0 2em; + padding: 0.4em 1em; + background: #20745E; + text-decoration: none; + font-size: 17px; + font-size: 1.0625rem; +} + +.infinite-scroll #infinite-handle span:hover { + background: #20745D; +} + +/*-------------------------------------------------------------- +# - Blocks +--------------------------------------------------------------*/ + +/* Audio */ +.wp-block-audio audio { + width: 100%; +} + +/* Separator */ +.wp-block-separator { + height: 2px; +} + +.wp-block-separator:not(.is-style-wide):not(.is-style-dots) { + max-width: 100px; +} + +/* Quote */ +.wp-block-quote.is-style-large { + border: none; + margin: 0 0 1.5em; + padding: 0; + font-size: 28px; + font-size: 1.75rem; +} + +.wp-block-quote.is-style-large p { + margin-bottom: 0.5em; + font-size: inherit; + font-style: inherit; + line-height: inherit; +} + +.wp-block-quote.is-style-large cite { + text-align: inherit; +} + +/* Pullquote */ +.wp-block-pullquote { + margin-bottom: 1.5em; + padding: 1.5em 0; + border-bottom: 3px solid #ddd; + border-top: 3px solid #ddd; +} + +.wp-block-pullquote blockquote { + border: none; + margin: 0; + padding: 0; + font-size: 28px; + font-size: 1.75rem; +} + +.wp-block-pullquote blockquote p { + margin-bottom: 0.5em; +} + +/* Cover */ +.wp-block-cover { + display: flex; +} + +.wp-block-cover-text { + margin-top: 0; + margin-bottom: 0; +} + +/* Image */ +.wp-block-image .alignleft { + margin-right: 1.5em; +} + +.wp-block-image .alignright { + margin-left: 1.5em; +} + +/* Captions */ +.blocks-gallery-caption, +.wp-block-embed figcaption, +.wp-block-image figcaption { + margin-top: 0.3em; + margin-bottom: 1em; + color: #555; + font-size: 13px; + font-size: 0.8125rem; + text-align: center; +} + +/* Latest Posts */ +.wp-block-latest-posts.wp-block-latest-posts__list { + margin: 0; + padding: 0; +} + +/* Table */ +.wp-block-table table { + table-layout: auto; +} + +/* Block Text Colors */ +.has-primary-color { + color: #20745D; +} + +.has-white-color { + color: #131516; +} + +.has-light-gray-color { + color: #131516; +} + +.has-dark-gray-color { + color: #d8d4cf; +} + +.has-black-color { + color: #20745E; +} + +/* Block Background Colors */ +.has-primary-background-color { + background-color: #20745D; +} + +.has-white-background-color { + background-color: #131516; +} + +.has-light-gray-background-color { + background-color: #f0f0f0; +} + +.has-dark-gray-background-color { + background-color: #d8d4cf; +} + +.has-black-background-color { + background-color: #20745E; +} + +/*-------------------------------------------------------------- +# - Widgets +--------------------------------------------------------------*/ +.widget { + margin: 0 0 2em 0; + padding: 1em 1.5em 1.5em; + max-width: 100%; + border-top: 3px solid #20745D; + background: #fff; + box-shadow: 0 2px 2px #aaa; + -ms-word-wrap: break-word; + word-wrap: break-word; + background-color: #131516; + color: #d8d4cf; +} + +.widget-header { + margin: 0 0 1em 0; +} + +.site-footer { + max-width: 100%; +} + +.widget-footer { + display: flex; + flex-direction: row; + flex-flow: center; + justify-content: center; +} + +.widget-footer-box { + max-width: 100%; + margin: 2%; +} + +.widget-footer-box.widget_text { + max-width: 15%; +} + +.widget-title { + display: block; + margin: 0; + padding: 0; + color: #fff; + font-size: 20px; + font-size: 1.25rem; + font-family: "Titillium Web", arial, helvetica, sans-serif; + font-family: var(--widget-title-font); + font-weight: normal; + font-weight: var(--widget-title-font-weight); + text-transform: uppercase; + text-transform: var(--widget-title-text-transform); + line-height: 1.4; + line-height: var(--title-line-height); +} + +.widget ul { + margin: 0; + padding: 0; + list-style: circle inside; +} + +.widget ul .children, +.widget ul .sub-menu { + margin: 0.5em 0 0.5em 1em; + padding: 0; +} + +/* Make sure select elements fit in widgets. */ +.widget select { + max-width: 100%; +} + +/* Theme Search Widget */ +.search-form { + position: relative; + display: block; + overflow: hidden; + margin: 0; + padding: 0; + width: 100%; +} + +.search-form .screen-reader-text { + display: none; +} + +.search-form .search-field { + display: inline-block; + box-sizing: border-box; + margin: 0; + padding: 0.5em 1.5em 0.5em 0.7em; + width: 100%; + -webkit-appearance: none; +} + +.search-form .search-submit { + position: absolute; + top: 0; + right: 0; + padding: 0.65em 0.75em 0 0.2em; + border: none; + cursor: pointer; + transition: all 0.2s ease; +} + +.search-form .search-submit .genericon-search { + display: inline-block; + padding: 0.05em 0 0.55em 0.45em; + color: #fff; + content: '\f400'; + vertical-align: middle; + text-decoration: inherit; + font-weight: normal; + font-style: normal; + font-size: 24px; + font-family: 'Genericons'; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/* Theme Calendar Widget */ +.widget_calendar { + font-size: 14px; + font-size: 0.875rem; +} + +.widget_calendar table { + margin: 0; +} + +.widget_calendar table caption { + padding: 0 0 1em; +} + +.widget_calendar table thead tr { + background: #131516; +} + +.widget_calendar table tr td { + text-align: center; +} + +.widget_calendar table tbody tr td a { + font-weight: bold; +} + +.widget_calendar table tfoot tr td { + padding-top: 1em; + border: none; +} + +.widget_calendar table tfoot tr #prev { + text-align: left; +} + +.widget_calendar table tfoot tr #next { + text-align: right; +} + +/*-------------------------------------------------------------- +# - Magazine Widgets +--------------------------------------------------------------*/ +.widget-magazine-posts { + margin-bottom: -1em; +} + +.widget-magazine-posts .type-post { + margin: 0 0 1.5em 0; + padding: 0; + border: none; + background: none; + box-shadow: none; +} + +.widget-magazine-posts .type-post .wp-post-image { + margin: 0; + max-width: 100%; +} + +.widget-magazine-posts .type-post .entry-title { + display: inline; +} + +.widget-magazine-posts .type-post .entry-content { + font-size: 16px; + font-size: 1rem; +} + +.widget-magazine-posts .type-post .entry-content p { + margin: 1em 0 0; +} + +.widget-magazine-posts .type-post .more-link { + margin: 1em 0 0; + text-decoration: none; +} + +.widget-magazine-posts .large-post .entry-title { + font-size: 22px; + font-size: 1.375rem; +} + +.widget-magazine-posts .medium-post { + display: block; + float: left; + box-sizing: border-box; + padding-right: 1.5em; + width: 33.33333333%; +} + +.widget-magazine-posts .medium-post .entry-title { + font-size: 17px; + font-size: 1.0625rem; +} + +.widget-magazine-posts .small-post { + display: block; + float: left; + box-sizing: border-box; + width: 100%; +} + +.widget-magazine-posts .small-post .wp-post-image { + float: left; + margin: 0 1em 0 0; + max-width: 40%; +} + +.widget-magazine-posts .small-post .entry-title { + font-size: 16px; + font-size: 1rem; +} + +.widget-magazine-posts .medium-post .entry-meta, +.widget-magazine-posts .small-post .entry-meta { + font-size: 12px; + font-size: 0.75rem; +} + +/* Magazine Posts Horizontal Box Widget */ +.widget-magazine-posts .magazine-horizontal-box .large-post .wp-post-image { + float: left; + box-sizing: border-box; + margin: 0; + padding-right: 0.75em; + width: 50%; +} + +.widget-magazine-posts .magazine-horizontal-box .large-post .post-content { + float: right; + box-sizing: border-box; + padding-left: 0.75em; + width: 50%; +} + +.widget-magazine-posts .magazine-horizontal-box .medium-posts { + margin-right: -1.5em; +} + +/* Magazine Posts Vertical Box Widget */ +.widget-magazine-posts .magazine-vertical-box .large-post { + float: left; + box-sizing: border-box; + margin-bottom: 1em; + padding-right: 0.75em; + width: 50%; +} + +.widget-magazine-posts .magazine-vertical-box .small-posts { + box-sizing: border-box; + margin-left: 50%; + padding-left: 0.75em; + width: 50%; +} + +/* Magazine Posts Grid Widget */ +.widget-magazine-posts .magazine-grid { + margin-right: -1.5em; +} + +.widget-magazine-posts .magazine-grid .large-post { + float: left; + box-sizing: border-box; + padding-right: 1.5em; + width: 50%; +} + +.widget-magazine-posts .magazine-grid .post-column:nth-child(2n+1) .large-post, +.widget-magazine-posts .magazine-grid .post-column:nth-child(3n+1) .medium-post { + clear: left; +} + +/* Magazine Posts Columns Widget */ +.tortuga-magazine-columns-widget { + padding: 0; + border: none; + background: none; + box-shadow: none; +} + +.tortuga-magazine-columns-widget .widget-magazine-posts { + margin-bottom: 0; +} + +.widget-magazine-posts-columns .magazine-posts-columns .magazine-posts-columns-content { + float: left; + width: 100%; + margin: 0; + padding: 1em 1.5em 1.5em; + max-width: 100%; + border-top: 3px solid #20745D; + background: #fff; + box-shadow: 0 2px 2px #aaa; + -ms-word-wrap: break-word; + word-wrap: break-word; +} + +.widget-magazine-posts-columns .magazine-posts-columns .magazine-posts-columns-content .magazine-posts-columns-post-list { + float: left; + box-sizing: border-box; + margin-bottom: -1.5em; + width: 100%; +} + +.widget-magazine-posts-columns .magazine-posts-column-left { + float: left; + box-sizing: border-box; + padding-right: 1em; + width: 50%; +} + +.widget-magazine-posts-columns .magazine-posts-column-right { + box-sizing: border-box; + margin-left: 50%; + padding-left: 1em; + width: 50%; +} + +.widget-magazine-posts-columns .medium-post { + padding-right: 0; + width: 100%; +} + +/*-------------------------------------------------------------- +# - Comments +--------------------------------------------------------------*/ +.comments-area { + padding: 1em 1.5em; +} + +/* Comment Header */ +.comments-header, +.comment-reply-title { + margin: 0 0 1em 0; +} + +.comments-header .comments-title, +.comment-reply-title span { + display: inline-block; + margin: 0; + padding: 0; + color: #20745D; + -ms-word-wrap: break-word; + word-wrap: break-word; + font-size: 20px; + font-size: 1.25rem; + font-family: "Titillium Web", arial, helvetica, sans-serif; + font-family: var(--widget-title-font); + font-weight: normal; + font-weight: var(--widget-title-font-weight); + text-transform: uppercase; + text-transform: var(--widget-title-text-transform); + line-height: 1.4; + line-height: var(--title-line-height); +} + +/* Comment List */ +.comment-list { + margin: 0; + padding: 0; + list-style: none; +} + +.comment { + margin: 0 0 1.5em; + padding: 1.5em 0 0; + border-top: 1px dotted #aaa; + -ms-word-wrap: break-word; + word-wrap: break-word; +} + +.comment-meta { + float: left; + padding: 0; + width: 100%; +} + +.comment-meta .comment-author img { + float: left; + margin-right: 1em; +} + +.bypostauthor { + display: block; +} + +.comment-meta .comment-metadata { + margin-top: 0.3em; + font-size: 14px; + font-size: 0.875rem; +} + +.comment-meta .comment-metadata a { + margin-right: 1em; +} + +.comment-content { + clear: left; + padding: 0.2em 0 0; +} + +.comment-content a { + word-wrap: break-word; +} + +.comment ol.children { + margin: 1.5em 0 0; + list-style: none; +} + +.comment .comment-respond { + margin-top: 1.5em; +} + +/* Comment Pagination */ +.comment-navigation { + margin: 0 0 1.5em; + padding: 0; + font-size: 14px; + font-size: 0.875rem; +} + +.comment-navigation .nav-previous { + float: left; +} + +.comment-navigation .nav-next { + float: right; +} + +.comment-navigation .nav-previous a:before { + margin-right: 3px; + content: "\00AB"; +} + +.comment-navigation .nav-next a:after { + margin-left: 4px; + content: "\00BB"; +} + +/* Comment Form */ +.comment-form { + padding: 0; +} + +.comment-form label { + display: inline-block; + min-width: 150px; + font-weight: bold; +} + +.comment-form textarea { + margin-top: 0.4em; +} + +.comment-form .form-submit { + margin-bottom: 1em; +} + +.comment-form input[type="checkbox"] + label { + display: inline; + padding-left: 0.5em; + font-weight: normal; +} + +.comment-reply-title small a { + margin-left: 1em; + text-decoration: underline; + font-weight: normal; + font-size: 14px; + font-size: 0.875rem; +} + +/*-------------------------------------------------------------- +# - Media +--------------------------------------------------------------*/ +.page-content .wp-smiley, +.entry-content .wp-smiley, +.comment-content .wp-smiley { + margin-top: 0; + margin-bottom: 0; + padding: 0; + border: none; +} + +/* Make sure embeds and iframes fit their containers. */ +embed, +iframe, +object { + max-width: 100%; +} + +/*-------------------------------------------------------------- +## 16.1 - Captions +--------------------------------------------------------------*/ +.wp-caption { + margin-bottom: 1.5em; + max-width: 100%; + font-size: 13px; + font-size: 0.8125rem; +} + +.wp-caption img[class*="wp-image-"] { + display: block; + margin: 0 auto; +} + +.wp-caption-text { + text-align: center; +} + +.wp-caption .wp-caption-text { + margin: 0.8075em 0; +} + +/*-------------------------------------------------------------- +## 16.2 - Galleries +--------------------------------------------------------------*/ +.gallery { + margin-bottom: 1em; +} + +.gallery-item { + display: inline-block; + box-sizing: border-box; + margin: 0; + padding: 0 1em 0.75em 0; + width: 100%; + vertical-align: top; + text-align: center; +} + +.gallery-columns-2 .gallery-item { + max-width: 50%; +} + +.gallery-columns-3 .gallery-item { + max-width: 33.33%; +} + +.gallery-columns-4 .gallery-item { + max-width: 25%; +} + +.gallery-columns-5 .gallery-item { + max-width: 20%; +} + +.gallery-columns-6 .gallery-item { + max-width: 16.66%; +} + +.gallery-columns-7 .gallery-item { + max-width: 14.28%; +} + +.gallery-columns-8 .gallery-item { + max-width: 12.5%; +} + +.gallery-columns-9 .gallery-item { + max-width: 11.11%; +} + +.gallery-caption { + display: block; + font-size: 13px; + font-size: 0.8125rem; + margin-bottom: 0.75em; +} + +/*-------------------------------------------------------------- +# - Footer +--------------------------------------------------------------*/ +.footer-wrap { + background: #4d2600; +} + +.site-footer { + color: rgba(255, 255, 255, 0.6); + font-size: 15px; + font-size: 0.9375rem; +} + +.site-footer .site-info { + float: left; + padding: 2.5em 0; +} + +.site-footer a:link, +.site-footer a:visited { + border-bottom: 1px dotted rgba(255, 255, 255, 0.6); + color: #fff; +} + +.site-footer a:hover, +.site-footer a:focus, +.site-footer a:active { + color: rgba(255, 255, 255, 0.6); +} + +/*-------------------------------------------------------------- +# - Plugins +--------------------------------------------------------------*/ + +/* Breadcrumbs */ +.breadcrumbs { + margin: 0; + padding: 0.5em 0; + background: #fff; + box-shadow: 0 2px 2px #aaa; + -ms-word-wrap: break-word; + word-wrap: break-word; +} + +.breadcrumbs-container { + color: #222; + font-size: 14px; + font-size: 0.875rem; +} + +.breadcrumbs .trail-browse, +.breadcrumbs .trail-items, +.breadcrumbs .trail-items li { + display: inline; + margin: 0; + padding: 0; +} + +.breadcrumbs .trail-browse { + margin-right: 0.5em; + font-weight: normal; + font-size: 14px; + font-size: 0.875rem; +} + +.breadcrumbs .trail-items { + list-style: none; +} + +.breadcrumbs .trail-items li::after { + padding: 0 0.5em; + content: "\00bb"; /* Raquo */ +} + +.trail-separator-slash .trail-items li::after { + content: "\002F"; +} + +.trail-separator-dash .trail-items li::after { + content: "\2013"; +} + +.trail-separator-bull .trail-items li::after { + content: "\2022"; +} + +.trail-separator-arrow-bracket .trail-items li::after { + content: "\003e"; +} + +.trail-separator-raquo .trail-items li::after { + content: "\00bb"; +} + +.trail-separator-single-arrow .trail-items li::after { + content: "\2192"; +} + +.trail-separator-double-arrow .trail-items li::after { + content: "\21D2"; +} + +.breadcrumbs .trail-items li:last-of-type::after { + display: none; +} + +:root { + --tz-column-gap: 1.5em; +} + +.tz-magazine-block .tz-magazine-post { + margin: 0 0 1.5em 0; + padding: 0; + border: none; + background: none; + box-shadow: none; +} + +.tz-magazine-block .tz-entry-title { + font-size: 22px; + font-size: 1.375rem; +} + +.tz-magazine-block .tz-magazine-grid-columns-3 .tz-entry-title { + font-size: 17px; + font-size: 1.0625rem; +} + +.tz-magazine-block .tz-magazine-grid-columns-4 .tz-entry-title, +.tz-magazine-block .tz-magazine-thumbnail-list .tz-entry-title { + font-size: 16px; + font-size: 1rem; +} + +.tz-magazine-block .tz-entry-meta { + margin: 0.1em 0; + font-size: 14px; + font-size: 0.875rem; +} + +.tz-magazine-block .tz-meta-field a { + text-decoration: none; +} + +.tz-magazine-block .tz-entry-content { + font-size: 16px; + font-size: 1rem; +} + +.tz-magazine-block .tz-more-link { + text-decoration: none; +} + +/*-------------------------------------------------------------- +# - Media Queries for Typography +--------------------------------------------------------------*/ +@media only screen and (max-width: 70em) { + .post-layout-columns .post-wrapper .post-column article .entry-title { + font-size: 20px; + font-size: 1.25rem; + } +} + +@media only screen and (max-width: 60em) { + .archive-title, + .page-title, + .entry-title { + font-size: 26px; + font-size: 1.625rem; + } + + .post-layout-columns .post-wrapper .post-column article .entry-title { + font-size: 22px; + font-size: 1.375rem; + } +} + +@media only screen and (max-width: 50em) { + .archive-title, + .page-title, + .entry-title { + font-size: 24px; + font-size: 1.5rem; + } + + .post-layout-columns .post-wrapper .post-column article .entry-title { + font-size: 20px; + font-size: 1.25rem; + } +} + +@media only screen and (max-width: 40em) { + .archive-title, + .page-title, + .entry-title, + .post-layout-columns .post-wrapper .post-column article .entry-title { + font-size: 22px; + font-size: 1.375rem; + } + + .entry-content { + font-size: 16px; + font-size: 1rem; + } +} + +@media only screen and (max-width: 30em) { + .site-branding .site-title { + font-size: 32px; + font-size: 2rem; + } + + .archive-title, + .page-title, + .entry-title, + .post-layout-columns .post-wrapper .post-column article .entry-title { + font-size: 20px; + font-size: 1.25rem; + } +} + +@media only screen and (max-width: 20em) { + .site-branding .site-title { + font-size: 28px; + font-size: 1.75rem; + } + + .archive-title, + .page-title, + .entry-title, + .post-layout-columns .post-wrapper .post-column article .entry-title { + margin: 0 0 0.5em; + font-size: 18px; + font-size: 1.125rem; + } +} + +/*-------------------------------------------------------------- +# - Media Queries for Layout +--------------------------------------------------------------*/ +@media only screen and (max-width: 80em) { + .container { + padding: 0 1.5rem; + } + + .site-content { + padding-top: 1.5rem; + } + + .content-area { + padding-right: 1.5rem; + } + + .widget, + .page-header, + .type-post, + .type-page, + .type-attachment, + .pagination, + .comments-area, + .site-main > article:not(.type-post):not(.type-page):not(.type-attachment), + .post-wrapper > .post-column > article:not(.type-post):not(.type-page):not(.type-attachment) { + margin-bottom: 1.5em; + } + + .post-layout-columns .post-wrapper { + margin-right: -1.5em; + } + + .post-layout-columns .post-wrapper .post-column { + padding-right: 1.5em; + } +} + +@media only screen and (max-width: 70em) { + .content-area { + width: 70%; + } + + .sidebar { + width: 30%; + } +} + +@media only screen and (max-width: 60em) { + .content-area, + .site-content .content-fullwidth { + float: none; + padding: 0; + width: 100%; + } + + .sidebar { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + float: none; + margin-right: -1.5em; + padding: 0; + width: auto; + } + + .sidebar .widget-wrap { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + float: right; + box-sizing: border-box; + padding-right: 1.5em; + width: 50%; + } + + .sidebar .widget-wrap .widget { + width: 100%; + } + + .sidebar .widget-wrap:nth-child(2n + 1) { + clear: left; + } + + .site-branding { + float: none; + margin: 0; + text-align: center; + } + + .site-branding .custom-logo { + float: none; + } + + .header-widgets { + display: block; + text-align: center; + } + + .header-widget { + display: inline-block; + float: none; + margin: 1em 0 0; + max-width: 100%; + vertical-align: top; + } + + .header-widget .search-form { + max-width: 300px; + } + + .post-layout-three-columns .post-wrapper .post-column { + width: 1%; + } + + /* Footer */ + .site-footer .site-info { + float: none; + text-align: center; + } +} + +@media only screen and (max-width: 40em) { + .post-layout-columns .post-wrapper { + display: block; + margin-right: 0; + } + + .post-layout-columns .post-wrapper .post-column { + display: block; + float: none; + padding-right: 0; + } + + .post-layout-two-columns .post-wrapper .post-column, + .post-layout-three-columns .post-wrapper .post-column { + width: 100%; + } + + /* Sidebar */ + .sidebar { + margin-right: 0; + } + + .sidebar .widget-wrap { + float: none; + padding-right: 0; + width: 100%; + } +} + +@media only screen and (max-width: 20em) { + .entry-meta .meta-date, + .entry-meta .meta-author, + .entry-meta .meta-category, + .entry-meta .meta-comments { + display: block; + } +} + +/*-------------------------------------------------------------- +# - Media Queries for Navigation +--------------------------------------------------------------*/ +@media only screen and (min-width: 60em) { + .primary-menu-toggle, + .main-navigation .dropdown-toggle { + display: none; + } + + .main-navigation ul, + .main-navigation ul ul { + display: block; + } + + .primary-navigation { + display: flex; + margin-left: auto; + width: auto; + align-items: center; + justify-content: center; + align-content: center; + } + + #masthead .main-navigation > ul.menu { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + margin: 0; + border-bottom: none; + } + + .main-navigation > ul { + padding: 0; + border: none; + } + + .main-navigation > ul > li > a { + padding: 0.8em 1.1em; + border: none; + } + + /* Dropdown Menus */ + .main-navigation ul ul { + position: absolute; + left: -999em; + top: 100%; + z-index: 99999; + border-top: 5px solid #20745D; + background: #20745E; + } + + .main-navigation ul li:hover > ul, + .main-navigation ul li.focus > ul { + right: auto; + left: 0; + } + + .main-navigation ul ul li a { + width: 16rem; + } + + .main-navigation ul ul ul { + left: -999em; + margin-top: -5px; + top: 0; + border-left: 1px dotted rgba(255, 255, 255, 0.2); + } + + .main-navigation ul ul li:hover > ul, + .main-navigation ul ul li.focus > ul { + right: auto; + left: 100%; + } + + .main-navigation ul ul li a, + .main-navigation ul ul ul li a, + .main-navigation ul ul ul ul li a { + padding: 1em; + } + + /* Dropdown Icons */ + .main-navigation .menu-item-has-children > a > .icon { + position: relative; + display: inline-block; + left: 0.5rem; + top: 0.1rem; + width: 14px; + height: 14px; + fill: #fff; + transition: fill 0.15s ease; + } + + .main-navigation ul ul .menu-item-has-children > a > .icon { + position: absolute; + left: auto; + right: 1em; + top: 50%; + margin-top: -0.5rem; + -webkit-transform: rotate(-90deg); + -ms-transform: rotate(-90deg); + transform: rotate(-90deg); + } +} + +/*-------------------------------------------------------------- +# - Media Queries for Magazine widgets +--------------------------------------------------------------*/ +@media only screen and (max-width: 70em) { + /* Magazine Post Widgets */ + .widget-magazine-posts .large-post .entry-title { + font-size: 20px; + font-size: 1.25rem; + } + + .widget-magazine-posts .medium-post .entry-title { + font-size: 16px; + font-size: 1rem; + } + + .widget-magazine-posts .small-post .entry-title { + font-size: 15px; + font-size: 0.9375rem; + } + + .widget-magazine-posts .magazine-horizontal-box .large-post .more-link { + display: none; + } +} + +@media only screen and (max-width: 65em) { + .widget-magazine-posts .magazine-horizontal-box .large-post .entry-content { + display: none; + } +} + +@media only screen and (max-width: 60em) { + /* Magazine Post Widgets */ + .widget-magazine-posts .magazine-horizontal-box .large-post .entry-content, + .widget-magazine-posts .magazine-horizontal-box .large-post .more-link { + display: inline-block; + } + + .widget-magazine-posts .large-post .entry-title { + font-size: 22px; + font-size: 1.375rem; + } + + .widget-magazine-posts .medium-post .entry-title { + font-size: 17px; + font-size: 1.0625rem; + } + + .widget-magazine-posts .small-post .entry-title { + font-size: 16px; + font-size: 1rem; + } +} + +@media only screen and (max-width: 50em) { + /* Magazine Post Widgets */ + .widget-magazine-posts .large-post .entry-title { + font-size: 20px; + font-size: 1.25rem; + } + + .widget-magazine-posts .medium-post .entry-title { + font-size: 16px; + font-size: 1rem; + } + + .widget-magazine-posts .small-post .entry-title { + font-size: 15px; + font-size: 0.9375rem; + } + + .widget-magazine-posts .magazine-horizontal-box .large-post .more-link { + display: none; + } +} + +@media only screen and (max-width: 45em) { + .widget-magazine-posts .medium-post .entry-title { + font-size: 15px; + font-size: 0.9375rem; + } + + .widget-magazine-posts .magazine-horizontal-box .large-post .entry-content { + display: none; + } +} + +@media only screen and (max-width: 40em) { + /* Magazine Post Widgets */ + .widget-magazine-posts .magazine-grid-two-columns { + margin-right: 0; + } + + .widget-magazine-posts .magazine-grid .large-post, + .widget-magazine-posts .magazine-horizontal-box .large-post .wp-post-image, + .widget-magazine-posts .magazine-vertical-box .large-post, + .widget-magazine-posts-columns .magazine-posts-column-left { + float: none; + padding: 0; + width: 100%; + } + + .widget-magazine-posts .magazine-vertical-box .small-posts, + .widget-magazine-posts-columns .magazine-posts-column-right { + margin-left: 0; + padding-top: 1em; + padding-left: 0; + width: 100%; + } + + .widget-magazine-posts .large-post .wp-post-image { + float: left; + margin: 0 1.5em 0 0; + max-width: 50%; + } + + .widget-magazine-posts .magazine-horizontal-box .large-post .post-content { + float: right; + padding-left: 1.5em; + width: 50%; + } + + .widget-magazine-posts .magazine-grid .large-post { + clear: left; + } + + .widget-magazine-posts .magazine-grid .large-post .wp-post-image { + margin-bottom: 1em; + } + + .widget-magazine-posts .large-post .entry-content { + display: none; + } + + .widget-magazine-posts .large-post .entry-title { + font-size: 18px; + font-size: 1.125rem; + } +} + +@media only screen and (max-width: 35em) { + .widget-magazine-posts .magazine-grid-three-columns { + margin-right: 0; + } + + .widget-magazine-posts .medium-post { + float: none; + padding-right: 0; + width: 100%; + } + + .widget-magazine-posts .medium-post .wp-post-image { + float: left; + margin: 0 1em 0 0; + max-width: 120px; + } +} + +@media only screen and (max-width: 30em) { + /* Magazine Homepage: Category Post Widgets */ + .widget-magazine-posts .medium-post .wp-post-image, + .widget-magazine-posts .small-post .wp-post-image { + max-width: 30%; + } + + .widget-magazine-posts .large-post .wp-post-image, + .widget-magazine-posts .magazine-grid .large-post .wp-post-image { + float: none; + margin: 0 0 0.5em 0; + max-width: 100%; + } + + .widget-magazine-posts .magazine-horizontal-box .large-post .post-content { + float: none; + padding: 0; + width: 100%; + } + + .widget-magazine-posts .large-post .entry-title { + font-size: 20px; + font-size: 1.25rem; + } + + .widget-magazine-posts .large-post .entry-content, + .widget-magazine-posts .large-post .entry-content .more-link, + .widget-magazine-posts .magazine-horizontal-box .large-post .entry-content, + .widget-magazine-posts .magazine-horizontal-box .large-post .entry-content .more-link { + display: inline-block; + } +} + +@media only screen and (max-width: 20em) { + .widget-magazine-posts .medium-post .entry-title, + .widget-magazine-posts .small-post .entry-title { + vertical-align: top; + font-size: 13px; + font-size: 0.8125rem; + } + + .widget-magazine-posts .medium-post .entry-meta, + .widget-magazine-posts .small-post .entry-meta { + display: none; + } +} + +/*-------------------------------------------------------------- +# - Media Queries for Media +--------------------------------------------------------------*/ +@media only screen and (max-width: 50em) { + /* Gallery */ + .gallery-item { + padding: 0 0.75em 0.5em 0; + } + + .gallery-columns-6 .gallery-item, + .gallery-columns-7 .gallery-item, + .gallery-columns-8 .gallery-item, + .gallery-columns-9 .gallery-item { + max-width: 25%; + } +} + + +@media only screen and (max-width: 30em) { + .alignright, + .alignleft { + float: none; +/* margin: 1em 0;*/ + } + + /* Gallery */ + .gallery-columns-4 .gallery-item, + .gallery-columns-5 .gallery-item, + .gallery-columns-6 .gallery-item, + .gallery-columns-7 .gallery-item, + .gallery-columns-8 .gallery-item, + .gallery-columns-9 .gallery-item { + max-width: 50%; + } +} + +/*-------------------------------------------------------------- +# - Theme Options +--------------------------------------------------------------*/ + +/* Sidebar Left Layout */ +.sidebar-left .content-area { + float: right; + padding-right: 0; + padding-left: 2em; +} + +.sidebar-left .sidebar { + float: left; +} + +@media only screen and (max-width: 80em) { + .sidebar-left .content-area { + padding-right: 0; + padding-left: 1.5em; + } +} + +@media only screen and (max-width: 60em) { + .sidebar-left .content-area { + padding: 0; + } +} + +.sidebar-left.post-layout-three-columns .content-archive { + float: none; + padding: 0; + width: 100%; +} + +/* Customizer Preview */ +.magazine-widgets-placeholder { + position: relative; + padding: 1em; +} + +.magazine-widgets-placeholder .magazine-widgets-placeholder-title { + display: block; + font-size: 14px; + font-size: 0.875rem; + font-weight: bold; + text-transform: uppercase; + margin: 0; + padding: 1em 1em 1em 55px; + color: #131516; + border: 2px dashed #131516; +} + +/* Add some space around the visual edit shortcut buttons. */ +.magazine-widgets-placeholder .customize-partial-edit-shortcut button { + left: 15px; + top: 13px; +} + +/* Login page logo */ +div#login h1 a { + background: none,url(/wp-content/uploads/2020/12/grip-logo-orange-transparency-150x150.png) bottom center no-repeat; + width: inherit; + padding: 40px; +} + +/* /wp-content/plugins/svg-support/css/svgs-attachment.css?ver=5.6 */ + +.attachment svg,.widget_media_image svg{ + max-width:100%;height:auto +} + +/* /wp-content/themes/tortuga/assets/css/custom-fonts.css?ver=20180413' */ + +/* + * Embed Theme Fonts + * + * Font Face code generated with the great Google Webfonts Helper by Mario Ranftl + * https://github.com/majodev/google-webfonts-helper/ + * + * @package Tortuga + */ + +/* OpenDyslexic Normal */ +@font-face { + font-family: 'OpenDyslexic'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local('OpenDyslexic Regular'), local('OpenDyslexic-Regular'), + url('/fonts/OpenDyslexic-Regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('/fonts/OpenDyslexic-Regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* OpenDyslexic Italic */ +@font-face { + font-family: 'OpenDyslexic'; + font-style: italic; + font-weight: 400; + font-display: swap; + src: local('OpenDyslexic Italic'), local('OpenDyslexic-Italic'), + url('/fonts/OpenDyslexic-Italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('/fonts/OpenDyslexic-Italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* OpenDyslexic Bold */ +@font-face { + font-family: 'OpenDyslexic'; + font-style: normal; + font-weight: 700; + font-display: swap; + src: local('OpenDyslexic Bold'), local('OpenDyslexic-Bold'), + url('/fonts/OpenDyslexic-Bold.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('/fonts/OpenDyslexic-Bold.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + + /* OpenDyslexic Bold Italic */ +@font-face { + font-family: 'OpenDyslexic'; + font-style: italic; + font-weight: 700; + font-display: swap; + src: local('OpenDyslexic Bold Italic'), local('OpenDyslexic-BoldItalic'), + url('/fonts/OpenDyslexic-Bold-Italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('/fonts/OpenDyslexic-Bold-Italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* open-sans-regular - latin-ext_latin */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local('Open Sans Regular'), local('OpenSans-Regular'), + url('../tortuga/assets/fonts/open-sans-v15-latin-ext_latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('../tortuga/assets/fonts/open-sans-v15-latin-ext_latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* open-sans-italic - latin-ext_latin */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + font-display: swap; + src: local('Open Sans Italic'), local('OpenSans-Italic'), + url('../tortuga/assets/fonts/open-sans-v15-latin-ext_latin-italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('../tortuga/assets/fonts/open-sans-v15-latin-ext_latin-italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* open-sans-700 - latin-ext_latin */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + font-display: swap; + src: local('Open Sans Bold'), local('OpenSans-Bold'), + url('../tortuga/assets/fonts/open-sans-v15-latin-ext_latin-700.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('../tortuga/assets/fonts/open-sans-v15-latin-ext_latin-700.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + + /* open-sans-700italic - latin-ext_latin */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 700; + font-display: swap; + src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), + url('../tortuga/assets/fonts/open-sans-v15-latin-ext_latin-700italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('../tortuga/assets/fonts/open-sans-v15-latin-ext_latin-700italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* titillium-web-regular - latin-ext_latin */ +@font-face { + font-family: 'Titillium Web'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local('Titillium Web Regular'), local('TitilliumWeb-Regular'), + url('../tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('../tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* titillium-web-italic - latin-ext_latin */ +@font-face { + font-family: 'Titillium Web'; + font-style: italic; + font-weight: 400; + font-display: swap; + src: local('Titillium Web Italic'), local('TitilliumWeb-Italic'), + url('../tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('../tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* titillium-web-700 - latin-ext_latin */ +@font-face { + font-family: 'Titillium Web'; + font-style: normal; + font-weight: 700; + font-display: swap; + src: local('Titillium Web Bold'), local('TitilliumWeb-Bold'), + url('../tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-700.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('../tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-700.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* titillium-web-700italic - latin-ext_latin */ +@font-face { + font-family: 'Titillium Web'; + font-style: italic; + font-weight: 700; + font-display: swap; + src: local('Titillium Web Bold Italic'), local('TitilliumWeb-BoldItalic'), + url('../tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-700italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('../tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-700italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* /wp-content/themes/tortuga/assets/css/safari-flexbox-fixes.css?ver=20200420 */ + +/* + * Safari Flexbox CSS Fixes + * + * @package Tortuga + */ + +/* Fix Flexbox issues for Safari 6.1-10.0 */ +@media screen and (min-color-index:0) and(-webkit-min-device-pixel-ratio:0) { + @media { + .post-layout-columns .post-wrapper .post-column { + margin-right: -1px; + } + } +} + +/* Fix Flexbox issues for Safari 10.1+ */ +@media not all and (min-resolution:.001dpcm) { + @media { + .post-layout-columns .post-wrapper .post-column { + margin-right: -1px; + } + } +} + +/* /wp-content/themes/tortuga/assets/genericons/genericons.css?ver=3.4.1 */ + +/** + + Genericons + +*/ + + +/* IE8 and below use EOT and allow cross-site embedding. + IE9 uses WOFF which is base64 encoded to allow cross-site embedding. + So unfortunately, IE9 will throw a console error, but it'll still work. + When the font is base64 encoded, cross-site embedding works in Firefox */ +@font-face { + font-family: "Genericons"; + src: url("./../tortuga/assets/genericons/Genericons.eot"); + src: url("./../tortuga/assets/genericons/Genericons.eot?") format("embedded-opentype"); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: "Genericons"; + src: url("data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAADakAA0AAAAAVqwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAA2iAAAABoAAAAcdeu6KE9TLzIAAAGgAAAARQAAAGBkLHXFY21hcAAAAogAAACWAAABsqlys6FjdnQgAAADIAAAAAQAAAAEAEQFEWdhc3AAADaAAAAACAAAAAj//wADZ2x5ZgAABFQAAC7AAABIkKrsSc5oZWFkAAABMAAAAC8AAAA2C2BCV2hoZWEAAAFgAAAAHQAAACQQuAgGaG10eAAAAegAAACfAAABOFjwU3Jsb2NhAAADJAAAATAAAAEwy4vdrm1heHAAAAGAAAAAIAAAACAA6QEZbmFtZQAAMxQAAAE5AAACN1KGf59wb3N0AAA0UAAAAjAAAAXo9iKXv3jaY2BkYGAAYqUtWvLx/DZfGbg5GEDgkmLVWhj9/ycDAwcbWJyDgQlEAQABJgkgAHjaY2BkYOBgAIIdHAz/fwLZbAyMDKiAFQBE7gLWAAAAAAEAAACXAOgAEAAAAAAAAgAAAAEAAQAAAEAALgAAAAB42mNgYf/MOIGBlYGB1Zh1JgMDoxyEZr7OkMYkxMDAxMDKzAADjAIMCBCQ5prC0MCg8FWcA8TdwQFVg6REgYERAPvTCMQAAAB42i1PsRXCUAg8SAprl7FN4QZqb2WZGRjAIVLrHj4be4ews7OJHAd54cMBd+Af7JHmt3RPYAOHAYFweFhmYE4jlj+uVb8nshCzd/qVeNUCLysG8lgwrojfSW/pcTK6o7rWX82En6HJwIEv+wbi28IwpndxRu/JaJGStHRDq5EB+OKCNumZLlSVl2TnOFVtl9nR5t7woR0QzVT+D7cKLeIAeNpjYGBgZoBgGQZGBhBYA+QxgvksDBOAtAIQsoDoj5yfOD9JflL7zPGF84vkF80vll88v0R+yfxS9lX8/3+wCoZPDJ8EPil8ZvjC8EXgi8IXgy8OXwK+JHwp+Mrw////x/wsfHx8HHxMvJo8Rjw6PGo8CjxSPCI8fDwc3PVQ2/ECRjYGuDJGJiDBhK4A4pXhDABtHClYAAAARAURAAAALAAsACwALABaAIQAzADyAQABHAFGAZQBzgIIArIDTAOkA+AEEgTCBRYFYgW+BjAGwgbkByQHSAeCB+AI2Ao4CowLGgvQDBwM6g08DX4Nug4kDkYOYg6ADsoO7A8yD4gP8hAwEGYQpBDuEUgRshHUEfYSQBJeEnoSlhLEEtwTIBNYE6oT6hQaFC4UShSQFJ4UtBTyFSAVjBW4FegV+hYUFiwWQBZWFmQWchaIFuYXFhdUF4gXyhgEGCwYThh8GNYZEhlCGVgZZhl8GZIZoBnQGhIaShp8GtIa6Br+GzAbVBt+G8Ib/Bw6HGgciBy8HOwdHh1WHXAdmB3eHvYfIB8uHzofSB9WH6of4CA4IMghACFCIcQh4CIGIjoiSCJ8IpYiyCLmIxAjWiPwJCQkSHja1Xx5YFTVvf/53nUm++zJJJnMkpkJJJkss5GFMIQ9w04IS0BZRSJLMIIo1l4XFETQFkVFBKwVrbuWpRaXPOtalZaCPKu1D2yf28NX21qfQubk9z3nzoSAS//+Mbn3nnvuuWc/n+/n+z3fCxHIaEKEJfJMIhKVhJ4GUtP8jCqRz+ufVuQ/NT8jChgkT4ssWmbRz6gK9DU/Ayw+bPKY/B6TZ7TgpuVwN71Unnnm0dHS24QQRSACUYis8XyzST6xEAch4LF5ZJsnKkc9NsDDj2ETXgUikT4iaClNJEBSGoZIP74qa+l//YRfKB5EAEyj4g/ztWBZbslcIEjucqHATOpjkYBXsYo18DNYeOQI3UMvonuOHIHXj+/YcXyHSs7FLGQp+o7sYA8IFq+BpmqKhtk6SDEZinWVWfMsHlLfIkRCgjdPsLpAtMlRUu8CmzVP8HlDEInJmkC+wcbihT54cN/6cePW79Mv/f1E+MUT2zvCM68cOWt7Rwc2pk8TNQ3IWW0gEbuI3yxI7KW9HdtnjbxyZrhj+xPbWX0EYhjcf9h3Jg9gldjBfhLm1af1ERF7BTAEmoxngQDeU35mB/YPsDiFtU0gxChgX2tn8S6FP3zG38O+zMWEVkU1yaYQRCMxt13WblvTT9bcdgpaTsnahlcqUp9owt0Vr2zYc+oUHwN8S2FjwMYV62PNA5+pPhaFc0EP4JhuPr2la4eQCVCsNRvnLac3A9nRNShIBFZPXpciEmHjareZsEbRWNTEBhVvHDasmyniwP7HJ+4AhlsgbmOP7PUsWVA8DFmHuzoSa3avSXR09XZ0HaZfHa7raOARKjm8kWoLdwfuamwHbcqaNVOo1t54V2D3QtA2nsQL1TYePrwRtMTaWUWYhvI0gGlYz5FeldWtgPiwvfW8bpVgAk/cwxqtR/hwhHxeVq9YWNG6duzo0miCHtBgy55TlN/jbYIHFGwyi6IJ6NVO7RG0c7c7ugBDRITMuMlYqovNAFYeuNg4BWPRSBCDBRhsEaKRQJCl5mOvSfmxpqbY3GQSCmYvXjy7s6bVP2WcjI/P4iEUxG7ddWt0brKrC5/P+Yz2fTans2bNjWMvPTwOi8B2Vhtw5pEr+cpyCWabVVAkVQngpGDFtChYcIsQCIYgT1ADQUUNifmQB7g4HIrN6pIdiponhCAYkoJDMd7ucEkOlxK32q02qxIMlAewtuYWQVwLdsg6+fyNbcufpfRunw+CruicxZMm1JYsV4zGfIuUV9+8OH7VzTdfFV80IpSVVZBvMErLS2rHT140JxrJtYfGjRjrFIyl3liplFNkNDlFY6nTmwuKwx0fu6gZfL67aOrZ5W03Pn/SQNiZfrXlIfr62RfrVXeh9JvpoxY4FUt5/eRFm2bsvTy/YvzFdSDK5jq/F8DrrzMpglAxtSFekt2zZ/rmRZPr/WYl1JmVJxdEq6VcX3GhoGY7zaAUuoZ5pNwhrqF5WabyKXVZhW4l/MJZaHhoC28cdiIDKkJ4nxqIiZQittSTBJlKiL8+LogKUe3+mDleLrvAjLhidsRIPBDMAda9LsERkxwCsETlccHiVXx2S4sUD1SBWyIIewRxjzDgk8iBw54n/0w3db0rjt/1ViE9TY/nNXaeue+KFT+Cxz4uSNCP6Bp5+biD/9dsLw0qj8DEq51nG1+if695Cb68Zevjbs19yW+VvZO2LB9yLT1Er4JdsAEsP/85/ZxupEvw+PznPweLNhWq4MY2evS13r0roL03FCq+m/5W2Jx4iP5u/dsQm1SrddTDuw0Xd7lKw+05HqUYSuGfM+nhE/bxIXBCrGAf3Sc0ultay6/9qXZB5lggL5R1FyAeVyEef0Aa8EZR7Qi4kuRz++3helzyOL0wgJfhOL8YXsXtkgNnaIsQrrc7YvE8UGOqllwpVM/Vnvo9pdvoEdpfVTXzgZ+MuPJ5n99dV/vjhyfPTs6uvwVu+TCrcfGm5OQt4R+tsLY3rFJquycX25Yff/vwfT0jH5QDY+vEbavV3KI3b5QrxfqfXbS445E3s4dUtm1a3Dg8XpRILPfm6vUlKD9UjQQH0MGHKG3xDEcZEXbEAz4UIKUIiyg0zwMI+hHk5dCPKlv3yZOWX/TT2VWUpqrYAxUR4SxB6HwNpN6c5jj8Iyt28drRp2lfqmFHl4xPOLZjufLHWK6b4YPIBAMrI9IiYU+Ugejl5YrSbpiQT1+lvX/+s6N6/EXXtsW7nE51/pKKiNMofU2P9h0SJ0ANCJEFs8bHShVRpB+Z/NVeUTASRJ9M2yyIzB6yhKzi2GA3s0HxeXFFF5hjgDMXFKjHuZsNdgtYYvEWMRphQGBA6AjXOwLlPq+kqPXh+tgIiNkVVVHBIiKOxBz2c3F+HGpVjJmjEbENVsDEL7aN7Nn38idXH6T7v9i27Qv6pzNv0x+PFQO3XC8JX/+j+y/gmypIBXkW1VFoBYdslvMkVZjcCMZV9NN7b6H9R8YXF/lX+Lw2S561qhb8T13bbs23WjdOCVzm82GkrVLwycO/OvSeqmHu+w9e/cnL+3pGbvsCJvLSU3mn6YYlUul9fTUhWREeSo30SHv7dkOOklNXNzZcGJoT9Qp+gzu7JL/Qlt3QAUu6Ox9YJQsilHlFWei7SzDBbFXwuiErE6lWVN68M9XQBT3vH2FzXSC3wj9Rlm4ldWQ4G0W73q8hITOh1ZARh5FBLM5+Me7xh20+my/qi4ajYeE9IZAbGLPkmh3T1723++JF9797+do3WncKVqO9oMjucpWblz66ZMmjS0d2j48VSXS/uE9nVJIWDE/fcc2SMYGLd7+3bu37uy+ePPEeyFVzDdmqURIXP/rbRxeXx8Y0Fb3Nk2M9RZ13Kc8jJzFjXTkjCTJxx4YX4R/FPkZF2FQHFYWyxxz02FoUfCbYhPn0ILQ9KExbumxGvL0KqjrkAnpoWkfluKG52fSQJMGEbJvbUxNuLZ++eVkDEPG/bl40oW1h9aS62kmhszsF8/Ir/WF3cSz1n+L187eaSnzFxZbs+GWPr2ZcKT0/Gct0k+ZBKzC91Bg/saCYDoEPiYTVjhG8moIa9dgLbCrWOs672mbSVyVbeCiGHfSbG0ZPg6mto6ZPGyk1PbSpftowbwH9GgAMhixvg3fMyMwy1ZfkGSIW9X0sbpzS2DxpclPjlL4N8NqTB4sqg4XdHtpz4CAcrrQ5h5Re3E5nY2c+isJhGsqFqazGLkkf9kBQwJURDMQtbALEWKWsrD/ZGsFVEULemYdJkQSpeewvyOeJLNWt++MT2xZEqmdctePgksVPeicUeOffqZb+TMqzb71kxuxAc57j6iVrn1005obXfzT/0ZtXTQjOMKuqaBVUn33munj5xBV3/fIvBhJftGnvgfkbPnxx18rm+Qn6wbAN22MPXy08ZfQsj9x6+LLp4e3/0bD49l9B3cFLn76uLTSt+6a7p965yOYszJmSVWgy+u54rnvS7nu3rp9Vr+N4RvYtzvCJAiFPwGYGY3ELn8/AGiXqjbI77AgbEI8Fgmk0x6nD2CRS7TinOWxuYboywE5yBMiFXCIt5+/YliwZX7J12lW/u31a0+W73u5Zd3T3tVOGdC0zl8iCSZDlvNHjtN41Sx/oGjZ1x0XRdn9Odp1r3KjY3GiBwbjG4pAP0NO7BjMH+hn9iuU/dP1icEaTlx0G8c7Ox+9YnYhfdM3td7bdcmyoIc9iSGRZbaYpVy185uZpzctvm7n96zujndGaXVcObZ01+upk5TSLhfpnLNo8BRyw7sgAQRDIXmGBukDei4srn/PeAuS2BeXpq2yF2V9+SR/+MnVFOiDvZecv03d41eUlUW9Xc4gXbyQR+bkP0TuIkwWpYhx/FrPDjCITQxhlVjaAtSAHlaGfpu5bsco7bZ71qvaN1z0152hdxNo8YdiabkPBpsSYG1VioA/SFB1Oh0AZ3HYtlLWvuKLnboOV/p7+agr9+1NPzbu7FB5nbcjoT/mIDd9af0ZBIag27OnjZ+CanoKsl/J7Ac99nL0SgHeJplTgWvbqWgUqEw47kw9xEwoHnDaMeEZNvihvVFwaBb+gs0wF1c0TN93cM3/+ig0XXzSqNfJqVzIZqjapGm2iH9PIrqoqZ/ls+lHMbi8ra2i8boOwNuVLJObO2cKm52D8cJBqjsEX1J+4lQK7O1aANeKr0c05B9bNHkb2b8J5WQlepRSs9iaojw2GELGMvnSKqVBIzf/XvPk0/ez0ZjP932RUJtFkMqqlT+ejCCWn9Lf6TolkbCMqSKg7NY1JsVekA5l3knxp9QOooPSTbeSnZAe5h9xH7icPkoeZNodNsNUq7M+q1KHOoNQpqpWdFBsDFOxOJR9A8QahtgYCwdpANKB3byAYCfIVGIhiZAS7IFobi8bqIqzPo/VxftV/I6A2DrF6B9Ta62rtYbtj4GdjRy37szqsdXYwyXEjOPyyLQ4mv+qPB1UjBGV/VFVx1Pk/Af+E9BkvqVZThSnVCiLgdBZZrADn/RNgIDGKVuEFTC68AAIM5JHOCDArcH2cujJ19mNwpV59EO6kH34sjPv000+hUpA/ph8KjQ9K/5AlWi2oAkjsHVaowIpM54D5A63OzoFjLPt0TUX+HC+AL+GLEhyTZAFkEPCWHew1ngE7H8vOptXpFop6jqwMlgzfgCn07Rd3wmz68M4X9/5pVeoFiLx47+Rdu3ZhaPbOF+//06rz56oF5dwL5GM2V5GJFaCO5uaqVQsSYVTXBJQPDrsUV9I8AjEVgXUEMEzFFKiHWTgDUxiRRmStjdQhVQuUsyj+aoyBcAgUPUI4B8whIRjggocnY1Qcc2MP2T0TSiIqi0GO1w6XiLfsjfStAPXlOINQiAVZlojhEpYZDJjjMYyPK5KCcG+2SxI5yJgfI2T0Dkb8OAc8tpueWLlyidW075r14N4wIbn6rTtmlSdC2KNGEUb+/OVlD4Brodt/KX3/dnHo0I4tV6xrn7vgyWuT2V3tl9AvV14xvCXLsHPlqv9qanEkQxs3RTsstnBBVbS0am4gEDEYzEUFlfXFzki1udghK5VlFTWh8bmohxlt9jGBwFirTTYbi70V9spOj9cvCh0bW8Mza3Js5qmXrBtWPjJsKjaaHRsebp91+0y64TRsuqRp1o43eibdsNAZG9/TTQ899BD9dFxb7qzZUP2MyXwv/fSNdde9DyGdd+rNZLQzzUDvMqxdfRn945139E8Yn9dgm739re6xm9bWY1uzBEiuaLp1Q7j62jtTWaNuGtYz1FfiTV775ALhshdbJlmbWpZfds3637g80+d3fpgMV1uDwxcsnFlcWaZm5zkc44YMbfc4PBZByHGai9v8/haTXYFhlQKUTSh1eQSo9Pnag1aP0yIZi8rcc2pHXhYy5Yy5aHU00l5tsOfVDC+Pb2ieclU0P2flA303f/3WTTeuPXrvZVb3yq3T7qJPrN/QXer8rz27YOU99/7BJQk5t7xL/7x7H/3D+9f//8R1mT73Y3W4ej25BG9cuAjy5BAqSKY8A858HnIJsTiKJ5eI+ngspPiC3kAeJgOXWAZqSMLF0iK6RIe8Wy2aMGb26CZnXlnlitVXdl86K2E2I+waTFa3P1IaWdU+xmzxjB41rACGKdbEiNmTpo+oyxLKW6Z3zpsx0mKRCsKR5NgZ48aXFBeJJmeR0XhKdTQOKc0eP2rMww899bO7N8xzqkPEnKH1M+ffsO3QojmbZ8Qtcm6uqtD/EVS7w+3yuUqzzUKRKycXCr2VeeXV4jOpjwQ5W5It1aMuGzPx+s62Km++ASFJyS+sCCerqxdMm9hYlZP9htG9fNWD9786b/LlTW4hr6QoKz2GiEFXIAYNIddh79hVbgwNMqiRUCwy5iaivseUAtlmBWapCgz+YRqmD9rTgn3gORITJpusg2SINS3zB57bMnQgpo4Mw6QbDiy5auWUiZe//yukq6ZRdZ3r75y69cq2sYteeHB7z4wqekmT1ze8qX368g6Xu9xtKYjEOxdVDvWUOIpqIj5vkXPYsBkzu7ctXzGsIR7tnL1xXsswr6el9dLJ1aFCp8NWUlYV8/pikVlXHrxnVbfYuuzyJQdumNSYN3zFrmff62mfefnGqXeu76xL5lTN6Nn+4AuL5tPftl86e3hzRbDY6bAYjeZ8zCPkLXe7W0I2e3l5dai+FqmIMzhkQtuCS0a3BgMlVrPJ46ofMbTKbvN4orWFRagDJSdNrBkRCnH+jKyIKMzuGGESHXFX1wbwrFQiS+EcJSRUgomjOO94Zp1Gwe6ptyuaPVhkZ0cymmCsgSZGXjFu7lCtt27VwgSoiACeOWMLDAbYG01KpLiu3OAJ6mdM3ZWsqK0QtIvu/3qzbKr2lLTvnD5zrz+Q1Cn927BVDas93KIVJLVkBBmPesxmrGUMq6UPWwSJAY4VYC3TWqK9nKkzCrvzxzidV+0oE1iQWwesdgmsjhgzlyjEqzCzbsRi1e0/gBKO866MXoTpLCimHHILYgXrCtQSgn7R7mD3LpBezx/qyu949nBHvmto/rDbfkL/1hoKjRwZCrXC6HmtrfNaBU9lw5DqshmpLY+C75FH6AePPkY/eOQR8KU+rKiZWVo1pFGuxoEYUb1vWCjvilfoF/QE/eKVtQWllUXrZtTNKDn03/Nks9kGDYXT69qWL2+rmVIn0jOT/vxkycz62LyYaMh3VeZ3dORXuvKHgRJqxeJbW/VzKDS8rHZIQ3B4alnXgctWHOzqOnjiYJdwb03JxOHlDUJ7qCVUnUg9Fe8srq9b+uzGKVM2/mop6n/hkb4Z66oDC43whj07Rx4/pG75HcurJ4Wa6bU5CypCsXlsfSK/Znq6RnwkjuPBjDBM7RX5loUwHDw23VzOu81hU2VPRscKRh1x/aE0ze63e2sA5t03f4w2LwZqzega+bUtW16X7kMaoc7bPX/+7nmw/D6Mlo7Os/ttIS8tm3vPnGjnj0YfPeKpqfHAx5uef3HTZdU/Ptq5a+6cnZ1/qA0dZ/FEryPbP8B5nU/KM3ybb+Lo+jrbxkF+yPZyHBB3IamOOxRkxpn9GyTW7wWSXX76Hn3P35UMwHLZ1DC6wSSr3Kx+VN/iOcrs6Kl9LAF9H/z8hR1Sqc9XKhHdrvUCcqnWgT0WByFG0WTMiduMEHUIt8Ga1Od0O6wULBTDggVWpv4u5NPtqc9hDb0dLt+d+iL1xW61lb5FD0F56lnw0V/RtyAC4+kH9CFxL/0TTIDI2W/o28t66EvQ0rOMt10ghCpzsO0uMoa3XRUFNU9iKoQKeaBrOEwcMr6F65vtb8TNyLCYcqGzMKaZcMuiBxVo+dXZjdbIHFlWrEU1rjMGWaVX5g11Z1vL8suaK4RTXtlpSa2ylcr/dFpLyz6wFouCS5RcFvr3Yp+vGEZk2wtUsmgRpbTFarVV2MyCgTYU5IqyWlkh2xxVVSV09S/tZW5zn0GRcZ4U5jnzDLtyrT5vcbDYk2PhOMX2R9h+0GDtb9BmCPnezY/0bgfHOgFnLd9TYnsdqPw5PDaPGBZ6xd5+wjRETJ7i8jylIRPW+klmLmHJCmPHOdwqZYTMRqCESyFFKBHf7GKApmAwRdg+U5Ldk8weC5+HZcSftmtm2DQza+q7f4hNeCdZTKhsmcQ6cIH8XHf3c/Qs/ZCefX716ufhjrXv3NvZee87a3fRr3buhKw/wdBO+rRKVj+vJ2LJkefji8+fXd2588RnJ3Z27qRf0dcxuUToXPqfnTAV3tPnB9aJ8L1IE957GY7arSLrVQ/rTKmL72ZqTGs+tUfS+B4m/ezUnn7siD2nCBncrmxSTKp0W53JEw3b8LAw45c+rbj+mh4vNlQ+VlhYRqFzBg9NwM5ORvu4xiniOdXrRKYcSODZqWhn2RLStLOYjCVIsbNwIOCkhD2HXkx5fl1cZChpxLrUoqasioxHxS16iZ4mqK0PowJRAnU/VFUJy1JC4RJ1xRO8DMK0KYebmya/s8bSb0AwqFij4pxQETyNVRLcDtTnDn9X5QnJGajr4H3rYpwblaQJZdwohqdhm5g+MmFPOowc1Wb6oZ7OvHtuO5vVmF+/pwGU6GnYM37Q9DVzFsh3NQWi+qY5Xx8zYaZ6tXo1tseNCAcOQB2tRYA4qAFvPt+jUyFurx+BsAt/Fsrmpk6VNzUGvTnWYcLX+4WyA/6uwIFCs7lwf+rkgQCG/cIwnspfU5pnDIWnS88dSJ3c7/cfKGptLTwglGHwoL9rYG1ynC8gJdh3KqCUZjv15W7JjOyOIM9HBEMJhdhHNGq6+9n0+oFhkLVzdd/q9Ue+PLKenQAb/LfVmSe4dHY9eze8mX64fv2AfTpdFm/pBcWRdFGoXtgtUY9NNsHfvlVmauxAngZBE1dT07fKpd+cq5VhsG2cr7cSUsFtVza2FeOJMjj6gXqIOIw4UGzpCv+mOkomIb6S+jf14vKNQKWBKO+QXKxTKaJbNdv/Z9AWNEIMqyIagXe8EZi2FUNVI8aNjgLnXYifMpyl8hL6JfKeL5dSBc4shRwYCjl+WEu3Tnrl3Zcn0lvh8kmvrFjxypQUYWauU/SlhRxbZXyTypf09CyDM3BmWU9PXyVcAT2TZ0yfTG+lW/EKL+3RXzglRDk6n1dn5ofh46uOgDcIjDWyuiOtjDNLeByCFgcE46whqEtk8N7PmSM2KK7zTYkUeWC/ckoAWMBbcucvdm2/qH3FK0lY+8fQdWfJdRpt5M268//eSG3h1YC3u257eAVvWsuaEaf2rEDIgf2eoj2nhJN0L2vTlO3e6ZPhinfhQ54DvMoauDf1Fm/4V13LeRNfWrNgJQdjEBho6b4S2P/M7IX1MwIKo15IaLSX9mqQ4CdIyBfcayxNen+R29HPz8NA+nrFhNbX29eriQl+EhPqBfcaS8PmqJaWKxbEsyjzcLFVGqJ+ziLsKutBhlWIVHJ4wPgZPveTiQ44mo49ySgg0DCB4OxPA76mg4+eQuGJEYoOIOjiX2+KqyACXjMH5w1QirxhBzGy9WrBP5CLQSW0/BD1U/8hWi5M3L9f+jE9mPoUJtL9ggPaQHCkPmXYovMFDbs2i692BN4gMxqj1Ne0PqKJuGAUBpiUGahTvdBLE+f4MeMLRu6TZAT8M3kYi0jhT8TfGQxzF5pedmJVJRLvv16lF98zkDzGdIwCW90OHIoaQfXjfMQ+6u3TaELUUo8vEGak9moLEgs0mIThBQqW3qdBL7acPetbwJ/lskdp/oS5syE2Ztx8VOQ5jPYgDCVS/E1WFegdjDc5uLY5g+a+Gp6IUO4z1aMYcwLeZEGgCnxmphyhmAWi7zm09ZMjdPfvj8I2mAYlr67qJ/Me/Jx+TA880b23G//kjLvE72HREZGsepX+lT5JLz/6BCSh6PMH5/VpPB2X7f3fADEo6ovYG07uo+JCecJ1UlyiLcgsBpZmMXgs6luVeZErZnxzunVZs8PhE76u7L68u5L+H193f4zQj8LC3LHa/LgvMbNrmPTO2AkTxp45ylcVRNmeAQ5MZp/BhtgQ1nkNQwXUXeJc3+RIhqCG6Oth0GB3sMYH1ZAgcBqleJnHFv1tkv7mpVkPbm0E1AoC0S2TmIMOHqi+JmH4S9d/MofFg2/G4i95YyWcSo8dD7U3AWoT/tjwU0IZ28h47PiSOSwCyutLaS3vPd3fivsxVWa8mPLAyzg9Liu7m7sz+bwDTkt8rXGazJ2XOIJrLLRmytRuXDcauzLXpZR2NcP2qxk2MD8lQZuypntqmmy9TJvZnUA2snUBP1HY3Mgjhbp/HIKnyrA+GjGjClHAii+wi+VccsyZSpfT5VPn7IR9Nz733I2Ys0qYNFl7DB/AXVOPrd0FWSnnc2B4jjlTMTxbwPBMPsmWEJIJH8QdMucl9KR2Uj65IEVgr9aLY4Vz1EAGuBQpwsFi48WuBvI10Q82k3GZ4pHionAQZ7CQIZhHEFd1HrMLO0w4iKwJzALi8JjKcIJxDwMTTn34y18E7ZOa0f4/PnTz6UcXrZc3DVs69i8pzfLO+KlLnljF4pRSvP8k1L1xzNP0b1X0jH3zqyDeugvsdPKlrz48Dt+3vDP215euPbKtFBR8SFNMJxGxrZLGW8OWpcb87tL1ZPjDOoG1j89EfzrFWVRP+vC9PsKd3RjSzBASBtZnKtczy9gq5/wgfQGHlN7vM6fXizCM/gu2a9QCa6UH04HuvlE4Mdgw/H33mjW718j30zLEJyLsSZ3Sry0L2VOcPvTwGpbkPG6icj7L8IW7kg1emTL3HUNVCa+QPLceEYnTsSJ3IBu8GAnLisuUdN4ZphzXmTJJ4475gqs/7f2pM2Vd/Mhc8Hi4EEK1Ecmzz8TSCPu48Bj8B2nnRuZHmRFDNKGrA/ycwMqx5zgI/A3QX6T6ZZ9OjCVOm5lE0nM9yzVK5oTKCB0j4kRlumgJ12d1cRiJNUHajsVtTNw+OWizT1UPb2xdVxV67vI9pwolwvWyHWWejYfD1Us3nNrT0srXpqaCKqf9Ye1Wxr+DbGEEA5ERbCdNRFquHEwmP207mqQN9CS8Bm1tnyaPt83e20/2yruSx/ARjKcN4GaPjuNdW2rHXiAMkIHJLpnRKPVc/4t6RWS9Qtym+Af5f+UnuKwRsPCoByQCn1PLLJjFXFTpL+THqYVaOmCWBrO4HRIX2B8UTX8H1zySWyS1EplFf8G8UGHWLGqRH++gv8B3O+BzrssnFFYPxuiYgASEiFRvCllNr8xksYDUJsHTMSxJsHRYFyMm41YCIYE/jQlsDKZ6B3wJRKwe88bEGSxyd9o+Pg8BVyhWTX+Gc5st0syzNE+QNe6STIwiq7zGSBmbAWeJoDsecx5fwG5kTfm2/ucjQZzZNShz4lwTJBl9jx3xsM03+D48SB/8vnthgEylMqE+7cLAgAN0xgP6e0K8awRuB+G2DFbnb+1iZ5CF4ZisG2T4WbeNMEMJs5718TiJObNo6dUu4qM0jvD8GX4FLsg/zASuzRcdVI4YZYownCtKYxlpmQI5K2NWwEyZqOExxfhcwQeYituv2xAydnCGM8U6FjN5Lqev4LEKCiOAIRBEfIc3iF/6cJBv+vQn/eQnn96kcODglnD9mnrzbvqvX5bSf0Ju6S8hm9FEoq97Ja3FMXxOAwBDq8Eg4IIBFJCwesz1FnDe8NZi43SHX0U5vLGqfVypDgoCVk3HLmBmGyZH8OJ2bzzsqHSlMeIc9pQPYI9ej+8rPe1JSDJ10If1/JI5HOnQ+R1lCtxfn/EqI7fgmdjWlkfl8hqBGDECFy3zLmf6JzNHpN6bKwToXIGNEMV1xy1yKMD38Qfn2bDymZgo5c4cePJFue86MKjFNP2MZbNhuUpNsdXI8gaUm/q6TY+5iY84kxBNyGrTs5nVLRCJc41F4apFIjN1+4hYX1/fd4TZo9hU0vT5fBZLi/80zjRNAdFyj7pAXUCq+M6K6ldUixpkRDFoCQTlINMf48G4HIuLcQeictwh2h1+h2rHseaT216vLmikv6tptm95Y4Sz5Y0ttqZa+rvGTwyGTxqhrrbJtuWNkdaRb9xqb6qFOhZNN3H4FU7fam+uOZdSzyA3O4E5NNfoST/RM771dcy4jGM3ucDGYEV9/rwvH4Ab+VWI+fnOaRyUC7+BkOo3n96yaYNweHwf4aHUmPHf+iAidWTL6c3jU2M2bGJX4fCGb/GH4nNypTyjVyCgstXPlrusc4eUfmEsCGGYsEkj4ezRY/XF/SaTwWx1n5srOo8y6SyRxWZEvUx0qGbceoBz8ZTsyxH965GBbxIyOK+7D4n48AwrnmTwftD+QyYtkiELm576dyB6iSkuIAa+nyCDvp/A0tLfT4jAHbwN34u5ZBDm6kbwNNalQRc7x4AAeEZfsXj+OgO6vKoixyOWv4LaFcNcjqnG84rxpH+DihPS4CoMFAm82rj0M0XzL1Gw/0UtUzy+hO1mrR+oxoXzznLhvJMym3TI1zy2MDK3C+edsExH+720V9v7rQlXz4vpSzJooWk5dl55ju/+wodx1m995ZMazFsvKOjskfP0yPPKCH93GfrONa4qB9+uZkDLfqUQjnIPqO8pH170t7ffsf/n825aUlHkLCyKjC52vmUyj5n+fXUSGhqndSdGXrR/XEFBia+k2Du0umpkg7fUaquOpH3hdZ1Xn9Xsp+K8YYYKjrknqRuHzQ0nL0jLEhpZ2hSOvESYwZ6lZcyHupk9I2MHYUzHTOz4RhgVg7AFj6DPb0HNLlzMggqjGimWeQe00/85UamlPuvgtkitYwTeybwu3I7JE6bDvO7/xPrkKtvYTgbTQFsEexnEW8CF0horv35CU/DGZ1+YcP/9E1741caK5gk4ZZeO+c1r97YMHXP33WOGttz7+ktj2Jwgl8BJdafixhWsfw3F7F8iqBbRwQzaQeGyE/Qo1Jw4Kh09cfToCag52/U1kK/lhm3IoRu2QQO8to2+Rl/bBq/RshaJtDCdjOunaTtQEdv9MQpRFLSoxX3LgTjKtTREubBJNxIpiCqsnX0oqges7lEm33UTrcxhhFnz8IRU9lwKbtMfMPp+ux6lP1wP2w+Xn/p3JWvkO8os+4EyLSj+g+oPldoHL8+lOw50/lDJOH1e7mSJGIqm56iMcgzLNRkF5rRgCqIIY/Y0k8CtngyARYJyaEfbc0v6OR7LCWYdpb18CrMPyujxHW0Tqabfp/0ldFzP4z7Vg3OVL8iLfMf752wPIuuTjCzycgdl0Weq5w4WHD0kPsnHrk4mV48dt6Il3ODzNYRbVozjMcB7SsaVxzRSdogDoUEYx/lRNrPSQBrEeYnMv9kT5Fv1wC0jDLgljS2shmHdKdLtDxcxNS/FxaPE51EfSW6Nr1lTPvfiem0wd+K2hguHlDkEurFzZE+Uf1qncEW4j583nwb76c1slxR5h3TeGGq6J6rG6SbTNwQiz8I2FBAn99f1cJRUVBt3QfF5mCmOQWglFOlBH8qkZV+uXr1w6sqFf/0NnQbk+iVz6uouXbt96YK3FG3smHuW3ZinFt20+r6nhV8NH9daWkpb6PFJU28jaTs6kTP7wz4xrHriYYsv7pFna19oFTRRwS6oXnKFikvOtM1b49wim2EQ6+eMYwmYgswRk7MLOJCWxzhxe/s5Vko6Xel7U0j0phaAm00QI/ezZv3KeIOR5HB/ZxuOIMp+i8ljYR8asNk2BEC3DKt+I6BKr+nKDWjf8DHTzS2gm5i1bzROhPFeThNjiqVnDC9shEHjLErjagYztmnny0kz+Y/zZZgjqKgjuLtlMF4j5EONMEJ1jIAyCNRAvhQcAY54cIQQCKoO/MsXWSK8RVkXR3jmCeP5QhnGYaAM8iGuloEazzcEK/HGEccMJYdaIyvMXdNRI48QkDiPEPBtScWkIuboyMdZd6GIzBPFLNnkEsjLkGhT8n1FhcMiFUEAWXbkWnL9geJRzsJch5xX6nCGC8XcGkOhrSJ/Yo9k9Ug2Q/OkZqUgJ2R3j3FdtuidJwO1bl+NSynJrk2Wx3ODxV6Lx2MszbYmY0PlvOxQgbMsz+fMcjsNhaFgnVLamD8kWIUKowEMcpYMTtc1726SsrJHubPUPIMh35rbHBTyLaPrvEaDx1BTWyY4Suoryk2CRxr6LcH9L0mxIMPum/zHp7LCRQaLTSyNueOq2ZdndfogS/VnNcdkVbD7so0VTtHuNNqz1ycFk5wlGLN8pc0em9VkMIH/ZsgxGBTVLDrkItvQfHOJN+AwmbPiVos9x1SgWixyvsliLXQ2O2srKt2uSqfRPKW2oNWUZcpxlIcWz/gJ7X+mPOeWEa3DSgqiLXK2Uc01Fxepdq9FrjMWZEuWxpGjyzplh8mpcBm6V3SrC6SMDfJbPH6Az/t+fcMNv75BFAdfpJM38Ougv7SfJLO79DJUxzlvIF9rYq84YK/BGwNbKyRqArEXUb8vwd6REnwvC+ORa/BYA+lLcDtOIr3PJXD+wqL1PAfbACpILRmmf6+sey4hJ/Po3y2nv5YxIWOLDYd0VHl6wUtpYodI08i/Ru4njWOZLtwYuPqmrh083KfvRQrJtMPI2LXeB5jc6NIkn3fdGIZ8oY5WB7WP29H1gHftWIyw87QHMoRZGdAtzv/2PS1LMps7me+4gejSpI8wBV5EAU55jMhAgmlOeFCSCQHnYXqY41ucY4BGcvX9EKOIOjEEWyS+Y+rzBiEaDCj5oDBfLodubiyDcyYaAp9igf/0+8EP3MtP/G0M2xGjBxPOTv9Ef5c/X9Dy/RjKdya0p6KBQNSvatSBtDPX3xWAclG2jZu+8QyNTkx2xaBNSzjzMbH+VheGOp2J1L/wJX+UkMHfEo4mE0k7mUeW8D2jtE9gC8SZU6DHNBDDfGzZ8A6KiHLlf2C0mdUHrxlQH/D8ueCqDgx1Mpoe9rGN/Sjx0kG2m5MOMiealD4N+tJq2vmX+fq484nwAJKqD9L3Y9Z5wZeMPpCeJ3j7wJ5TkJk2OJPoB6f2pMXKmeQgZTiZmTsC9skpNaH08v00ou/Lh42CiGzXwbZHM2tWfsS3plXMFmh3v84k6fH/Hsc9A/Cnb0TJPdEWoe+kwGcPqoOzerYxkxi7F36W3sETYBWuqZ/imvLwvRYH9w6Iu8BhYh7XgzrZFrb5TC2Q6WaZ3rGMPkCX0AeW3TH2lR5NS/edpvW8Qn+kd9OROY/+9s1H5rRdYoF/aQ+c64UHNJptWSqm0o0W0nOCkMk4H3SLVyX75tdcCqytwyESZFt85UFlIMIcDwR9ujUsEg+YeC3xoUtwtwjML47dFah2m98bCOreoI48QeWbBG/neucuCkQC18+lX+28h/5rzg14s3iOJ+9t9rS39D68XfrY5yB9/thSDO4qSWk7U8Pn/mNT5+M/aarY8mu+qTCybRnt38rzS5x49MpbNl/52HH9bivAsgmtmGTqgiMg6HHXY1aY5fX6He0/0tmh/WLzwpXhzsTcWyZnbF3aoL1swZNGC1nTTXps3TOeInHGwMaQMgSAAQ7AuI09bPJWAclCLcHqUO3EIb9+371H6eX0SfrXV1cJpOv5S6D+sBgOU7LqVSiBabDt6Ocnnn+a/m06r8OrOBca+f8FUcr9zjhX5CTaGg8rAjOvBoRg2AXumDR1z5o1UyJzws/2Wr98up88/aW11/EOFB8XtTVTBDJlTXhOhJKpBYfoF0PoF1AwBAoObT50KO3TLGJLB++pySS9p3buO2pHxoLDDZ+mwWE13SeDzpxAZc6MOn1XPKTfy+gJvL+zM9+Z6T/mLsDwltnSGbHWQ6y/+TduhNfNyHbRQPTIoh//PCIKMe654JHIOroVqtahHh25Eqro1nXHhMdT77yTOpE68U7qHeFx+WN6zx/onvffh4V/EFENodekboRb6DrhGrgx8917poyMP4SnGFCFH5TJsWOo7g96Mb0ZN7h++YPfFnklL8zjWKaK386MVrD6wbK07x7X1ezI8CuZ/cmIs4vtZnOc9nBvczbv1EAQYZk9hfq43cFs1gof036udnWxweCBueOHzLphj77r20f0O8q4MQcyLpaBpP/TkKZrF3Xq8ZSH4cLv9arJBLLoO7029Z3hgId9i8x2j+3hWJhv3NnjulJSnv5M2Wp31PNHkqPebhl4xp+EM0/s4njohol/27r1b3Q/vZ3uZyGxy+LKN+bn/Z3+NXb1xNEmk6nI6cz95SU//uKiXK2kPLiJPvPIuFunjA6HyhSn0vPLn0OgK8epuWrCd9Dr3+l7JBEO5Lvlx359GGZfXaRqg7OGiby4s8vykRcX5qlbTWaTIbvYbHPlOpsacj6qcTVYJ8/GEk3NJZGs3GDbqFxwRvxh57xZYduYQDg3MCWZc15fidybtIjNdh//TwL4ZrzoyzARWxxn7y6hZFffxcpwWk3v/+yvlChLzpyFiz+Fx+THaDUcYwccP/s8HcUIiPR6apQ45+yOY8c4DqVtSen95cHaJhPPusJznmcmV3XYyuQx/Pz/AAfdhq542o2QsWrDMBCGfyVOSjOUDn4AdSlJiY1sMCTZ0hQHQqcM6RyMahsSKVj2EChd+wgd+wZ9s7xDz4pKl0IrkO7T3a+73wZwhU8wnNcNHhwzDPDiuIMLvDvu4hYnxx4G7M5xD9fsyXGf8q+kZN4l3e7tq5YZfDw77tDcN8ddPOLDsQef+Y574Cxx3Kd8gQU0DjiiQokcBWpwDJFhRDGGQIQEY+IV6SQU0RwGezR0GpvBQh+OVZkXNR9mIx6LKBnzlZaKz82+MUaSZGmV0k7JqJOit1hKJasy04p4TcWcmu6wJRHWMm92W4LUimsbK1JIayskYxwz2r81PlciTBBgSvv7M5BqVae6yiWPQ8Fn/McAXaJJMA1a8/9wu7FFQ2Vtf4mwE0IbW2fYyMqUWnEholAIwf/u+QXtVlqxAAAAeNpt0meTFVUUheH7DhkJEgQJgpIFhdvn7NM9gxKGCZKzKGZyUHJGySAgSq7i5wrFfYdPdFXX+tRP9V61Wl2tt8//rdbh1vueV29eWl2tYXQxjOGMYCSjGM0YxvIB4xjPBCbyIZOYzBSm8hHTmM7HzGAms5jNJ8xhLp/yGfOYzwIWsojFLOFzlrKML/iS5aygTUUiExRqGrrpYSVf8TWrWM0a1tLLOvroZ4BBvmE9G9jIJjazha1sYzs72MkudvMte/iO79nLD/zIT/zML/zKb+xjPwc4yCEOc4SjHOM4v/MHJzjJKU5zhrOc4zwXuMglLnOFq/zJX1zjOje4yS1uc4e73ONv7vOAh/zDI/7lPx7zhKc84zkveDnqwsljg1W7bVZmMrMZZjFrszG7zZ63mfSSXtJLekkv6SW9pJf00pBX6VV6lV6lV+lVepVepVfpVXpJL+klvaSX9JJe6njZu7J3Ze/K3pW9K3tXbg9915id/wid0Amd0Amd0Amd0Il3TueesJ+wn7CfsJ+wn7CfsJ+wn7CfsJ+wn7CfsJ+wn7CfsJ+wn0h6SS/pZb2sl/WyXtbLelkv62W9rBd6oRd6oRd6oRd6oRd6oVf0il7RK3pFr+gVvaJX9IperVfr1Xq1Xq1X69V6tV6tV+s1eo1eo9foNXqNXtPxijsr7qy4s+LOijsr7qy0h75rzG6zx+w115l9Zr85YA520l0Wd1ncZXGXxV0Wd1ncZama1x+EcTsAAAAB//8AAnjaY2BgYGQAgosrjpwF0ZcUq9bCaABTzgdAAAA=") format("woff"), + url("./../tortuga/assets/genericons/Genericons.ttf") format("truetype"), + url("./../tortuga/assets/genericons/Genericons.svg#Genericons") format("svg"); + font-weight: normal; + font-style: normal; +} + +@media screen and (-webkit-min-device-pixel-ratio:0) { + @font-face { + font-family: "Genericons"; + src: url("./../tortuga/assets/genericons/Genericons.svg#Genericons") format("svg"); + } +} + + +/** + * All Genericons + */ + +.genericon { + font-size: 16px; + vertical-align: top; + text-align: center; + -moz-transition: color .1s ease-in 0; + -webkit-transition: color .1s ease-in 0; + display: inline-block; + font-family: "Genericons"; + font-style: normal; + font-weight: normal; + font-variant: normal; + line-height: 1; + text-decoration: inherit; + text-transform: none; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + speak: none; +} + + +/** + * Helper classes + */ + +.genericon-rotate-90 { + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); +} + +.genericon-rotate-180 { + -webkit-transform: rotate(180deg); + -moz-transform: rotate(180deg); + -ms-transform: rotate(180deg); + -o-transform: rotate(180deg); + transform: rotate(180deg); + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); +} + +.genericon-rotate-270 { + -webkit-transform: rotate(270deg); + -moz-transform: rotate(270deg); + -ms-transform: rotate(270deg); + -o-transform: rotate(270deg); + transform: rotate(270deg); + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); +} + +.genericon-flip-horizontal { + -webkit-transform: scale(-1, 1); + -moz-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + -o-transform: scale(-1, 1); + transform: scale(-1, 1); +} + +.genericon-flip-vertical { + -webkit-transform: scale(1, -1); + -moz-transform: scale(1, -1); + -ms-transform: scale(1, -1); + -o-transform: scale(1, -1); + transform: scale(1, -1); +} + + +/** + * Individual icons + */ + +.genericon-404:before { content: "\f423"; } +.genericon-activity:before { content: "\f508"; } +.genericon-anchor:before { content: "\f509"; } +.genericon-aside:before { content: "\f101"; } +.genericon-attachment:before { content: "\f416"; } +.genericon-audio:before { content: "\f109"; } +.genericon-bold:before { content: "\f471"; } +.genericon-book:before { content: "\f444"; } +.genericon-bug:before { content: "\f50a"; } +.genericon-cart:before { content: "\f447"; } +.genericon-category:before { content: "\f301"; } +.genericon-chat:before { content: "\f108"; } +.genericon-checkmark:before { content: "\f418"; } +.genericon-close:before { content: "\f405"; } +.genericon-close-alt:before { content: "\f406"; } +.genericon-cloud:before { content: "\f426"; } +.genericon-cloud-download:before { content: "\f440"; } +.genericon-cloud-upload:before { content: "\f441"; } +.genericon-code:before { content: "\f462"; } +.genericon-codepen:before { content: "\f216"; } +.genericon-cog:before { content: "\f445"; } +.genericon-collapse:before { content: "\f432"; } +.genericon-comment:before { content: "\f300"; } +.genericon-day:before { content: "\f305"; } +.genericon-digg:before { content: "\f221"; } +.genericon-document:before { content: "\f443"; } +.genericon-dot:before { content: "\f428"; } +.genericon-downarrow:before { content: "\f502"; } +.genericon-download:before { content: "\f50b"; } +.genericon-draggable:before { content: "\f436"; } +.genericon-dribbble:before { content: "\f201"; } +.genericon-dropbox:before { content: "\f225"; } +.genericon-dropdown:before { content: "\f433"; } +.genericon-dropdown-left:before { content: "\f434"; } +.genericon-edit:before { content: "\f411"; } +.genericon-ellipsis:before { content: "\f476"; } +.genericon-expand:before { content: "\f431"; } +.genericon-external:before { content: "\f442"; } +.genericon-facebook:before { content: "\f203"; } +.genericon-facebook-alt:before { content: "\f204"; } +.genericon-fastforward:before { content: "\f458"; } +.genericon-feed:before { content: "\f413"; } +.genericon-flag:before { content: "\f468"; } +.genericon-flickr:before { content: "\f211"; } +.genericon-foursquare:before { content: "\f226"; } +.genericon-fullscreen:before { content: "\f474"; } +.genericon-gallery:before { content: "\f103"; } +.genericon-github:before { content: "\f200"; } +.genericon-googleplus:before { content: "\f206"; } +.genericon-googleplus-alt:before { content: "\f218"; } +.genericon-handset:before { content: "\f50c"; } +.genericon-heart:before { content: "\f461"; } +.genericon-help:before { content: "\f457"; } +.genericon-hide:before { content: "\f404"; } +.genericon-hierarchy:before { content: "\f505"; } +.genericon-home:before { content: "\f409"; } +.genericon-image:before { content: "\f102"; } +.genericon-info:before { content: "\f455"; } +.genericon-instagram:before { content: "\f215"; } +.genericon-italic:before { content: "\f472"; } +.genericon-key:before { content: "\f427"; } +.genericon-leftarrow:before { content: "\f503"; } +.genericon-link:before { content: "\f107"; } +.genericon-linkedin:before { content: "\f207"; } +.genericon-linkedin-alt:before { content: "\f208"; } +.genericon-location:before { content: "\f417"; } +.genericon-lock:before { content: "\f470"; } +.genericon-mail:before { content: "\f410"; } +.genericon-maximize:before { content: "\f422"; } +.genericon-menu:before { content: "\f419"; } +.genericon-microphone:before { content: "\f50d"; } +.genericon-minimize:before { content: "\f421"; } +.genericon-minus:before { content: "\f50e"; } +.genericon-month:before { content: "\f307"; } +.genericon-move:before { content: "\f50f"; } +.genericon-next:before { content: "\f429"; } +.genericon-notice:before { content: "\f456"; } +.genericon-paintbrush:before { content: "\f506"; } +.genericon-path:before { content: "\f219"; } +.genericon-pause:before { content: "\f448"; } +.genericon-phone:before { content: "\f437"; } +.genericon-picture:before { content: "\f473"; } +.genericon-pinned:before { content: "\f308"; } +.genericon-pinterest:before { content: "\f209"; } +.genericon-pinterest-alt:before { content: "\f210"; } +.genericon-play:before { content: "\f452"; } +.genericon-plugin:before { content: "\f439"; } +.genericon-plus:before { content: "\f510"; } +.genericon-pocket:before { content: "\f224"; } +.genericon-polldaddy:before { content: "\f217"; } +.genericon-portfolio:before { content: "\f460"; } +.genericon-previous:before { content: "\f430"; } +.genericon-print:before { content: "\f469"; } +.genericon-quote:before { content: "\f106"; } +.genericon-rating-empty:before { content: "\f511"; } +.genericon-rating-full:before { content: "\f512"; } +.genericon-rating-half:before { content: "\f513"; } +.genericon-reddit:before { content: "\f222"; } +.genericon-refresh:before { content: "\f420"; } +.genericon-reply:before { content: "\f412"; } +.genericon-reply-alt:before { content: "\f466"; } +.genericon-reply-single:before { content: "\f467"; } +.genericon-rewind:before { content: "\f459"; } +.genericon-rightarrow:before { content: "\f501"; } +.genericon-search:before { content: "\f400"; } +.genericon-send-to-phone:before { content: "\f438"; } +.genericon-send-to-tablet:before { content: "\f454"; } +.genericon-share:before { content: "\f415"; } +.genericon-show:before { content: "\f403"; } +.genericon-shuffle:before { content: "\f514"; } +.genericon-sitemap:before { content: "\f507"; } +.genericon-skip-ahead:before { content: "\f451"; } +.genericon-skip-back:before { content: "\f450"; } +.genericon-skype:before { content: "\f220"; } +.genericon-spam:before { content: "\f424"; } +.genericon-spotify:before { content: "\f515"; } +.genericon-standard:before { content: "\f100"; } +.genericon-star:before { content: "\f408"; } +.genericon-status:before { content: "\f105"; } +.genericon-stop:before { content: "\f449"; } +.genericon-stumbleupon:before { content: "\f223"; } +.genericon-subscribe:before { content: "\f463"; } +.genericon-subscribed:before { content: "\f465"; } +.genericon-summary:before { content: "\f425"; } +.genericon-tablet:before { content: "\f453"; } +.genericon-tag:before { content: "\f302"; } +.genericon-time:before { content: "\f303"; } +.genericon-top:before { content: "\f435"; } +.genericon-trash:before { content: "\f407"; } +.genericon-tumblr:before { content: "\f214"; } +.genericon-twitch:before { content: "\f516"; } +.genericon-twitter:before { content: "\f202"; } +.genericon-unapprove:before { content: "\f446"; } +.genericon-unsubscribe:before { content: "\f464"; } +.genericon-unzoom:before { content: "\f401"; } +.genericon-uparrow:before { content: "\f500"; } +.genericon-user:before { content: "\f304"; } +.genericon-video:before { content: "\f104"; } +.genericon-videocamera:before { content: "\f517"; } +.genericon-vimeo:before { content: "\f212"; } +.genericon-warning:before { content: "\f414"; } +.genericon-website:before { content: "\f475"; } +.genericon-week:before { content: "\f306"; } +.genericon-wordpress:before { content: "\f205"; } +.genericon-xpost:before { content: "\f504"; } +.genericon-youtube:before { content: "\f213"; } +.genericon-zoom:before { content: "\f402"; } + + + + +/* /wp-includes/css/dist/block-library/style.min.css?ver=5.6 */ + +:root{--wp-admin-theme-color:#007cba;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-20:#005a87}#start-resizable-editor-section{display:none}.wp-block-audio figcaption{margin-top:.5em;margin-bottom:1em}.wp-block-audio audio{width:100%;min-width:300px}.wp-block-button__link{color:#fff;background-color:#32373c;border:none;border-radius:1.55em;box-shadow:none;cursor:pointer;display:inline-block;font-size:1.125em;padding:.667em 1.333em;text-align:center;text-decoration:none;overflow-wrap:break-word}.wp-block-button__link:active,.wp-block-button__link:focus,.wp-block-button__link:hover,.wp-block-button__link:visited{color:#fff}.wp-block-button__link.aligncenter{text-align:center}.wp-block-button__link.alignright{text-align:right}.wp-block-button.is-style-squared,.wp-block-button__link.wp-block-button.is-style-squared{border-radius:0}.wp-block-button.no-border-radius,.wp-block-button__link.no-border-radius{border-radius:0!important}.is-style-outline>.wp-block-button__link,.wp-block-button__link.is-style-outline{border:2px solid}.is-style-outline>.wp-block-button__link:not(.has-text-color),.wp-block-button__link.is-style-outline:not(.has-text-color){color:#32373c}.is-style-outline>.wp-block-button__link:not(.has-background),.wp-block-button__link.is-style-outline:not(.has-background){background-color:transparent}.wp-block-buttons .wp-block-button{display:inline-block;margin-right:.5em;margin-bottom:.5em}.wp-block-buttons .wp-block-button:last-child{margin-right:0}.wp-block-buttons.alignright .wp-block-button{margin-right:0;margin-left:.5em}.wp-block-buttons.alignright .wp-block-button:first-child{margin-left:0}.wp-block-buttons.alignleft .wp-block-button{margin-left:0;margin-right:.5em}.wp-block-buttons.alignleft .wp-block-button:last-child{margin-right:0}.wp-block-button.aligncenter,.wp-block-buttons.aligncenter,.wp-block-calendar{text-align:center}.wp-block-calendar tbody td,.wp-block-calendar th{padding:.25em;border:1px solid #ddd}.wp-block-calendar tfoot td{border:none}.wp-block-calendar table{width:100%;border-collapse:collapse}.wp-block-calendar table th{font-weight:400;background:#ddd}.wp-block-calendar a{text-decoration:underline}.wp-block-calendar table caption,.wp-block-calendar table tbody{color:#40464d}.wp-block-categories.alignleft{margin-right:2em}.wp-block-categories.alignright{margin-left:2em}.wp-block-code code{white-space:pre-wrap;overflow-wrap:break-word}.wp-block-columns{display:flex;margin-bottom:1.75em;flex-wrap:wrap}@media (min-width:782px){.wp-block-columns{flex-wrap:nowrap}}.wp-block-columns.has-background{padding:1.25em 2.375em}.wp-block-columns.are-vertically-aligned-top{align-items:flex-start}.wp-block-columns.are-vertically-aligned-center{align-items:center}.wp-block-columns.are-vertically-aligned-bottom{align-items:flex-end}.wp-block-column{flex-grow:1;min-width:0;word-break:break-word;overflow-wrap:break-word}@media (max-width:599px){.wp-block-column{flex-basis:100%!important}}@media (min-width:600px) and (max-width:781px){.wp-block-column:not(:only-child){flex-basis:calc(50% - 1em)!important;flex-grow:0}.wp-block-column:nth-child(2n){margin-left:2em}}@media (min-width:782px){.wp-block-column{flex-basis:0;flex-grow:1}.wp-block-column[style*=flex-basis]{flex-grow:0}.wp-block-column:not(:first-child){margin-left:2em}}.wp-block-column.is-vertically-aligned-top{align-self:flex-start}.wp-block-column.is-vertically-aligned-center{-ms-grid-row-align:center;align-self:center}.wp-block-column.is-vertically-aligned-bottom{align-self:flex-end}.wp-block-column.is-vertically-aligned-bottom,.wp-block-column.is-vertically-aligned-center,.wp-block-column.is-vertically-aligned-top{width:100%}.wp-block-cover,.wp-block-cover-image{position:relative;background-size:cover;background-position:50%;min-height:430px;height:100%;width:100%;display:flex;justify-content:center;align-items:center;padding:1em;box-sizing:border-box}.wp-block-cover-image.has-parallax,.wp-block-cover.has-parallax{background-attachment:fixed}@supports (-webkit-overflow-scrolling:touch){.wp-block-cover-image.has-parallax,.wp-block-cover.has-parallax{background-attachment:scroll}}@media (prefers-reduced-motion:reduce){.wp-block-cover-image.has-parallax,.wp-block-cover.has-parallax{background-attachment:scroll}}.wp-block-cover-image.is-repeated,.wp-block-cover.is-repeated{background-repeat:repeat;background-size:auto}.wp-block-cover-image.has-background-dim:not([class*=-background-color]),.wp-block-cover.has-background-dim:not([class*=-background-color]){background-color:#000}.wp-block-cover-image.has-background-dim:before,.wp-block-cover.has-background-dim:before{content:"";background-color:inherit}.wp-block-cover-image.has-background-dim:not(.has-background-gradient):before,.wp-block-cover-image .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim:not(.has-background-gradient):before,.wp-block-cover .wp-block-cover__gradient-background{position:absolute;top:0;left:0;bottom:0;right:0;z-index:1;opacity:.5}.wp-block-cover-image.has-background-dim.has-background-dim-10 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-10:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-10 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-10:not(.has-background-gradient):before{opacity:.1}.wp-block-cover-image.has-background-dim.has-background-dim-20 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-20:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-20 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-20:not(.has-background-gradient):before{opacity:.2}.wp-block-cover-image.has-background-dim.has-background-dim-30 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-30:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-30 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-30:not(.has-background-gradient):before{opacity:.3}.wp-block-cover-image.has-background-dim.has-background-dim-40 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-40:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-40 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-40:not(.has-background-gradient):before{opacity:.4}.wp-block-cover-image.has-background-dim.has-background-dim-50 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-50:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-50 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-50:not(.has-background-gradient):before{opacity:.5}.wp-block-cover-image.has-background-dim.has-background-dim-60 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-60:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-60 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-60:not(.has-background-gradient):before{opacity:.6}.wp-block-cover-image.has-background-dim.has-background-dim-70 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-70:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-70 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-70:not(.has-background-gradient):before{opacity:.7}.wp-block-cover-image.has-background-dim.has-background-dim-80 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-80:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-80 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-80:not(.has-background-gradient):before{opacity:.8}.wp-block-cover-image.has-background-dim.has-background-dim-90 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-90:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-90 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-90:not(.has-background-gradient):before{opacity:.9}.wp-block-cover-image.has-background-dim.has-background-dim-100 .wp-block-cover__gradient-background,.wp-block-cover-image.has-background-dim.has-background-dim-100:not(.has-background-gradient):before,.wp-block-cover.has-background-dim.has-background-dim-100 .wp-block-cover__gradient-background,.wp-block-cover.has-background-dim.has-background-dim-100:not(.has-background-gradient):before{opacity:1}.wp-block-cover-image.alignleft,.wp-block-cover-image.alignright,.wp-block-cover.alignleft,.wp-block-cover.alignright{max-width:290px;width:100%}.wp-block-cover-image:after,.wp-block-cover:after{display:block;content:"";font-size:0;min-height:inherit}@supports ((position:-webkit-sticky) or (position:sticky)){.wp-block-cover-image:after,.wp-block-cover:after{content:none}}.wp-block-cover-image.aligncenter,.wp-block-cover-image.alignleft,.wp-block-cover-image.alignright,.wp-block-cover.aligncenter,.wp-block-cover.alignleft,.wp-block-cover.alignright{display:flex}.wp-block-cover-image .wp-block-cover__inner-container,.wp-block-cover .wp-block-cover__inner-container{width:100%;z-index:1;color:#fff}.wp-block-cover-image .wp-block-subhead:not(.has-text-color),.wp-block-cover-image h1:not(.has-text-color),.wp-block-cover-image h2:not(.has-text-color),.wp-block-cover-image h3:not(.has-text-color),.wp-block-cover-image h4:not(.has-text-color),.wp-block-cover-image h5:not(.has-text-color),.wp-block-cover-image h6:not(.has-text-color),.wp-block-cover-image p:not(.has-text-color),.wp-block-cover .wp-block-subhead:not(.has-text-color),.wp-block-cover h1:not(.has-text-color),.wp-block-cover h2:not(.has-text-color),.wp-block-cover h3:not(.has-text-color),.wp-block-cover h4:not(.has-text-color),.wp-block-cover h5:not(.has-text-color),.wp-block-cover h6:not(.has-text-color),.wp-block-cover p:not(.has-text-color){color:inherit}.wp-block-cover-image.is-position-top-left,.wp-block-cover.is-position-top-left{align-items:flex-start;justify-content:flex-start}.wp-block-cover-image.is-position-top-center,.wp-block-cover.is-position-top-center{align-items:flex-start;justify-content:center}.wp-block-cover-image.is-position-top-right,.wp-block-cover.is-position-top-right{align-items:flex-start;justify-content:flex-end}.wp-block-cover-image.is-position-center-left,.wp-block-cover.is-position-center-left{align-items:center;justify-content:flex-start}.wp-block-cover-image.is-position-center-center,.wp-block-cover.is-position-center-center{align-items:center;justify-content:center}.wp-block-cover-image.is-position-center-right,.wp-block-cover.is-position-center-right{align-items:center;justify-content:flex-end}.wp-block-cover-image.is-position-bottom-left,.wp-block-cover.is-position-bottom-left{align-items:flex-end;justify-content:flex-start}.wp-block-cover-image.is-position-bottom-center,.wp-block-cover.is-position-bottom-center{align-items:flex-end;justify-content:center}.wp-block-cover-image.is-position-bottom-right,.wp-block-cover.is-position-bottom-right{align-items:flex-end;justify-content:flex-end}.wp-block-cover-image.has-custom-content-position.has-custom-content-position .wp-block-cover__inner-container,.wp-block-cover.has-custom-content-position.has-custom-content-position .wp-block-cover__inner-container{margin:0;width:auto}.wp-block-cover__video-background{position:absolute;top:50%;left:50%;transform:translateX(-50%) translateY(-50%);width:100%;height:100%;z-index:0;object-fit:cover}.wp-block-cover-image-text,.wp-block-cover-text,section.wp-block-cover-image h2{color:#fff}.wp-block-cover-image-text a,.wp-block-cover-image-text a:active,.wp-block-cover-image-text a:focus,.wp-block-cover-image-text a:hover,.wp-block-cover-text a,.wp-block-cover-text a:active,.wp-block-cover-text a:focus,.wp-block-cover-text a:hover,section.wp-block-cover-image h2 a,section.wp-block-cover-image h2 a:active,section.wp-block-cover-image h2 a:focus,section.wp-block-cover-image h2 a:hover{color:#fff}.wp-block-cover-image .wp-block-cover.has-left-content{justify-content:flex-start}.wp-block-cover-image .wp-block-cover.has-right-content{justify-content:flex-end}.wp-block-cover-image.has-left-content .wp-block-cover-image-text,.wp-block-cover.has-left-content .wp-block-cover-text,section.wp-block-cover-image.has-left-content>h2{margin-left:0;text-align:left}.wp-block-cover-image.has-right-content .wp-block-cover-image-text,.wp-block-cover.has-right-content .wp-block-cover-text,section.wp-block-cover-image.has-right-content>h2{margin-right:0;text-align:right}.wp-block-cover-image .wp-block-cover-image-text,.wp-block-cover .wp-block-cover-text,section.wp-block-cover-image>h2{font-size:2em;line-height:1.25;z-index:1;margin-bottom:0;max-width:580px;padding:.44em;text-align:center}.wp-block-embed.alignleft,.wp-block-embed.alignright,.wp-block[data-align=left]>[data-type="core/embed"],.wp-block[data-align=right]>[data-type="core/embed"]{max-width:360px;width:100%}.wp-block-embed.alignleft .wp-block-embed__wrapper,.wp-block-embed.alignright .wp-block-embed__wrapper,.wp-block[data-align=left]>[data-type="core/embed"] .wp-block-embed__wrapper,.wp-block[data-align=right]>[data-type="core/embed"] .wp-block-embed__wrapper{min-width:280px}.wp-block-embed{margin-bottom:1em}.wp-block-embed figcaption{margin-top:.5em;margin-bottom:1em}.wp-block-embed iframe{max-width:100%}.wp-block-embed__wrapper{position:relative}.wp-embed-responsive .wp-has-aspect-ratio .wp-block-embed__wrapper:before{content:"";display:block;padding-top:50%}.wp-embed-responsive .wp-has-aspect-ratio iframe{position:absolute;top:0;right:0;bottom:0;left:0;height:100%;width:100%}.wp-embed-responsive .wp-embed-aspect-21-9 .wp-block-embed__wrapper:before{padding-top:42.85%}.wp-embed-responsive .wp-embed-aspect-18-9 .wp-block-embed__wrapper:before{padding-top:50%}.wp-embed-responsive .wp-embed-aspect-16-9 .wp-block-embed__wrapper:before{padding-top:56.25%}.wp-embed-responsive .wp-embed-aspect-4-3 .wp-block-embed__wrapper:before{padding-top:75%}.wp-embed-responsive .wp-embed-aspect-1-1 .wp-block-embed__wrapper:before{padding-top:100%}.wp-embed-responsive .wp-embed-aspect-9-16 .wp-block-embed__wrapper:before{padding-top:177.77%}.wp-embed-responsive .wp-embed-aspect-1-2 .wp-block-embed__wrapper:before{padding-top:200%}.wp-block-file{margin-bottom:1.5em}.wp-block-file.aligncenter{text-align:center}.wp-block-file.alignright{text-align:right}.wp-block-file .wp-block-file__button{background:#32373c;border-radius:2em;color:#fff;font-size:.8em;padding:.5em 1em}.wp-block-file a.wp-block-file__button{text-decoration:none}.wp-block-file a.wp-block-file__button:active,.wp-block-file a.wp-block-file__button:focus,.wp-block-file a.wp-block-file__button:hover,.wp-block-file a.wp-block-file__button:visited{box-shadow:none;color:#fff;opacity:.85;text-decoration:none}.wp-block-file *+.wp-block-file__button{margin-left:.75em}.blocks-gallery-grid,.wp-block-gallery{display:flex;flex-wrap:wrap;list-style-type:none;padding:0;margin:0}.blocks-gallery-grid .blocks-gallery-image,.blocks-gallery-grid .blocks-gallery-item,.wp-block-gallery .blocks-gallery-image,.wp-block-gallery .blocks-gallery-item{margin:0 1em 1em 0;display:flex;flex-grow:1;flex-direction:column;justify-content:center;position:relative;width:calc(50% - 1em)}.blocks-gallery-grid .blocks-gallery-image:nth-of-type(2n),.blocks-gallery-grid .blocks-gallery-item:nth-of-type(2n),.wp-block-gallery .blocks-gallery-image:nth-of-type(2n),.wp-block-gallery .blocks-gallery-item:nth-of-type(2n){margin-right:0}.blocks-gallery-grid .blocks-gallery-image figure,.blocks-gallery-grid .blocks-gallery-item figure,.wp-block-gallery .blocks-gallery-image figure,.wp-block-gallery .blocks-gallery-item figure{margin:0;height:100%}@supports ((position:-webkit-sticky) or (position:sticky)){.blocks-gallery-grid .blocks-gallery-image figure,.blocks-gallery-grid .blocks-gallery-item figure,.wp-block-gallery .blocks-gallery-image figure,.wp-block-gallery .blocks-gallery-item figure{display:flex;align-items:flex-end;justify-content:flex-start}}.blocks-gallery-grid .blocks-gallery-image img,.blocks-gallery-grid .blocks-gallery-item img,.wp-block-gallery .blocks-gallery-image img,.wp-block-gallery .blocks-gallery-item img{display:block;max-width:100%;height:auto;width:100%}@supports ((position:-webkit-sticky) or (position:sticky)){.blocks-gallery-grid .blocks-gallery-image img,.blocks-gallery-grid .blocks-gallery-item img,.wp-block-gallery .blocks-gallery-image img,.wp-block-gallery .blocks-gallery-item img{width:auto}}.blocks-gallery-grid .blocks-gallery-image figcaption,.blocks-gallery-grid .blocks-gallery-item figcaption,.wp-block-gallery .blocks-gallery-image figcaption,.wp-block-gallery .blocks-gallery-item figcaption{position:absolute;bottom:0;width:100%;max-height:100%;overflow:auto;padding:3em .77em .7em;color:#fff;text-align:center;font-size:.8em;background:linear-gradient(0deg,rgba(0,0,0,.7),rgba(0,0,0,.3) 70%,transparent);box-sizing:border-box;margin:0}.blocks-gallery-grid .blocks-gallery-image figcaption img,.blocks-gallery-grid .blocks-gallery-item figcaption img,.wp-block-gallery .blocks-gallery-image figcaption img,.wp-block-gallery .blocks-gallery-item figcaption img{display:inline}.blocks-gallery-grid figcaption,.wp-block-gallery figcaption{flex-grow:1}.blocks-gallery-grid.is-cropped .blocks-gallery-image a,.blocks-gallery-grid.is-cropped .blocks-gallery-image img,.blocks-gallery-grid.is-cropped .blocks-gallery-item a,.blocks-gallery-grid.is-cropped .blocks-gallery-item img,.wp-block-gallery.is-cropped .blocks-gallery-image a,.wp-block-gallery.is-cropped .blocks-gallery-image img,.wp-block-gallery.is-cropped .blocks-gallery-item a,.wp-block-gallery.is-cropped .blocks-gallery-item img{width:100%}@supports ((position:-webkit-sticky) or (position:sticky)){.blocks-gallery-grid.is-cropped .blocks-gallery-image a,.blocks-gallery-grid.is-cropped .blocks-gallery-image img,.blocks-gallery-grid.is-cropped .blocks-gallery-item a,.blocks-gallery-grid.is-cropped .blocks-gallery-item img,.wp-block-gallery.is-cropped .blocks-gallery-image a,.wp-block-gallery.is-cropped .blocks-gallery-image img,.wp-block-gallery.is-cropped .blocks-gallery-item a,.wp-block-gallery.is-cropped .blocks-gallery-item img{height:100%;flex:1;object-fit:cover}}.blocks-gallery-grid.columns-1 .blocks-gallery-image,.blocks-gallery-grid.columns-1 .blocks-gallery-item,.wp-block-gallery.columns-1 .blocks-gallery-image,.wp-block-gallery.columns-1 .blocks-gallery-item{width:100%;margin-right:0}@media (min-width:600px){.blocks-gallery-grid.columns-3 .blocks-gallery-image,.blocks-gallery-grid.columns-3 .blocks-gallery-item,.wp-block-gallery.columns-3 .blocks-gallery-image,.wp-block-gallery.columns-3 .blocks-gallery-item{width:calc(33.33333% - .66667em);margin-right:1em}.blocks-gallery-grid.columns-4 .blocks-gallery-image,.blocks-gallery-grid.columns-4 .blocks-gallery-item,.wp-block-gallery.columns-4 .blocks-gallery-image,.wp-block-gallery.columns-4 .blocks-gallery-item{width:calc(25% - .75em);margin-right:1em}.blocks-gallery-grid.columns-5 .blocks-gallery-image,.blocks-gallery-grid.columns-5 .blocks-gallery-item,.wp-block-gallery.columns-5 .blocks-gallery-image,.wp-block-gallery.columns-5 .blocks-gallery-item{width:calc(20% - .8em);margin-right:1em}.blocks-gallery-grid.columns-6 .blocks-gallery-image,.blocks-gallery-grid.columns-6 .blocks-gallery-item,.wp-block-gallery.columns-6 .blocks-gallery-image,.wp-block-gallery.columns-6 .blocks-gallery-item{width:calc(16.66667% - .83333em);margin-right:1em}.blocks-gallery-grid.columns-7 .blocks-gallery-image,.blocks-gallery-grid.columns-7 .blocks-gallery-item,.wp-block-gallery.columns-7 .blocks-gallery-image,.wp-block-gallery.columns-7 .blocks-gallery-item{width:calc(14.28571% - .85714em);margin-right:1em}.blocks-gallery-grid.columns-8 .blocks-gallery-image,.blocks-gallery-grid.columns-8 .blocks-gallery-item,.wp-block-gallery.columns-8 .blocks-gallery-image,.wp-block-gallery.columns-8 .blocks-gallery-item{width:calc(12.5% - .875em);margin-right:1em}.blocks-gallery-grid.columns-1 .blocks-gallery-image:nth-of-type(1n),.blocks-gallery-grid.columns-1 .blocks-gallery-item:nth-of-type(1n),.wp-block-gallery.columns-1 .blocks-gallery-image:nth-of-type(1n),.wp-block-gallery.columns-1 .blocks-gallery-item:nth-of-type(1n){margin-right:0}.blocks-gallery-grid.columns-2 .blocks-gallery-image:nth-of-type(2n),.blocks-gallery-grid.columns-2 .blocks-gallery-item:nth-of-type(2n),.wp-block-gallery.columns-2 .blocks-gallery-image:nth-of-type(2n),.wp-block-gallery.columns-2 .blocks-gallery-item:nth-of-type(2n){margin-right:0}.blocks-gallery-grid.columns-3 .blocks-gallery-image:nth-of-type(3n),.blocks-gallery-grid.columns-3 .blocks-gallery-item:nth-of-type(3n),.wp-block-gallery.columns-3 .blocks-gallery-image:nth-of-type(3n),.wp-block-gallery.columns-3 .blocks-gallery-item:nth-of-type(3n){margin-right:0}.blocks-gallery-grid.columns-4 .blocks-gallery-image:nth-of-type(4n),.blocks-gallery-grid.columns-4 .blocks-gallery-item:nth-of-type(4n),.wp-block-gallery.columns-4 .blocks-gallery-image:nth-of-type(4n),.wp-block-gallery.columns-4 .blocks-gallery-item:nth-of-type(4n){margin-right:0}.blocks-gallery-grid.columns-5 .blocks-gallery-image:nth-of-type(5n),.blocks-gallery-grid.columns-5 .blocks-gallery-item:nth-of-type(5n),.wp-block-gallery.columns-5 .blocks-gallery-image:nth-of-type(5n),.wp-block-gallery.columns-5 .blocks-gallery-item:nth-of-type(5n){margin-right:0}.blocks-gallery-grid.columns-6 .blocks-gallery-image:nth-of-type(6n),.blocks-gallery-grid.columns-6 .blocks-gallery-item:nth-of-type(6n),.wp-block-gallery.columns-6 .blocks-gallery-image:nth-of-type(6n),.wp-block-gallery.columns-6 .blocks-gallery-item:nth-of-type(6n){margin-right:0}.blocks-gallery-grid.columns-7 .blocks-gallery-image:nth-of-type(7n),.blocks-gallery-grid.columns-7 .blocks-gallery-item:nth-of-type(7n),.wp-block-gallery.columns-7 .blocks-gallery-image:nth-of-type(7n),.wp-block-gallery.columns-7 .blocks-gallery-item:nth-of-type(7n){margin-right:0}.blocks-gallery-grid.columns-8 .blocks-gallery-image:nth-of-type(8n),.blocks-gallery-grid.columns-8 .blocks-gallery-item:nth-of-type(8n),.wp-block-gallery.columns-8 .blocks-gallery-image:nth-of-type(8n),.wp-block-gallery.columns-8 .blocks-gallery-item:nth-of-type(8n){margin-right:0}}.blocks-gallery-grid .blocks-gallery-image:last-child,.blocks-gallery-grid .blocks-gallery-item:last-child,.wp-block-gallery .blocks-gallery-image:last-child,.wp-block-gallery .blocks-gallery-item:last-child{margin-right:0}.blocks-gallery-grid.alignleft,.blocks-gallery-grid.alignright,.wp-block-gallery.alignleft,.wp-block-gallery.alignright{max-width:290px;width:100%}.blocks-gallery-grid.aligncenter .blocks-gallery-item figure,.wp-block-gallery.aligncenter .blocks-gallery-item figure{justify-content:center}.wp-block-group{box-sizing:border-box}h1.has-background,h2.has-background,h3.has-background,h4.has-background,h5.has-background,h6.has-background{padding:1.25em 2.375em}.wp-block-image{margin-bottom:1em}.wp-block-image img{max-width:100%}.wp-block-image.aligncenter{text-align:center}.wp-block-image.alignfull img,.wp-block-image.alignwide img{width:100%}.wp-block-image .aligncenter,.wp-block-image .alignleft,.wp-block-image .alignright{display:table}.wp-block-image .aligncenter>figcaption,.wp-block-image .alignleft>figcaption,.wp-block-image .alignright>figcaption{display:table-caption;caption-side:bottom}.wp-block-image .alignleft{float:left;margin:.5em 1em .5em 0}.wp-block-image .alignright{float:right;margin:.5em 0 .5em 1em}.wp-block-image .aligncenter{margin-left:auto;margin-right:auto}.wp-block-image figcaption{margin-top:.5em;margin-bottom:1em}.is-style-circle-mask img,.is-style-rounded img{border-radius:9999px}@supports ((-webkit-mask-image:none) or (mask-image:none)) or (-webkit-mask-image:none){.is-style-circle-mask img{-webkit-mask-image:url('data:image/svg+xml;utf8,');mask-image:url('data:image/svg+xml;utf8,');mask-mode:alpha;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center;border-radius:0}}.wp-block-latest-comments__comment{line-height:1.1;list-style:none;margin-bottom:1em}.has-avatars .wp-block-latest-comments__comment{min-height:2.25em;list-style:none}.has-avatars .wp-block-latest-comments__comment .wp-block-latest-comments__comment-excerpt,.has-avatars .wp-block-latest-comments__comment .wp-block-latest-comments__comment-meta{margin-left:3.25em}.has-dates .wp-block-latest-comments__comment,.has-excerpts .wp-block-latest-comments__comment{line-height:1.5}.wp-block-latest-comments__comment-excerpt p{font-size:.875em;line-height:1.8;margin:.36em 0 1.4em}.wp-block-latest-comments__comment-date{display:block;font-size:.75em}.wp-block-latest-comments .avatar,.wp-block-latest-comments__comment-avatar{border-radius:1.5em;display:block;float:left;height:2.5em;margin-right:.75em;width:2.5em}.wp-block-latest-posts.alignleft{margin-right:2em}.wp-block-latest-posts.alignright{margin-left:2em}.wp-block-latest-posts.wp-block-latest-posts__list{list-style:none}.wp-block-latest-posts.wp-block-latest-posts__list li{clear:both}.wp-block-latest-posts.is-grid{display:flex;flex-wrap:wrap;padding:0}.wp-block-latest-posts.is-grid li{margin:0 1.25em 1.25em 0;width:100%}@media (min-width:600px){.wp-block-latest-posts.columns-2 li{width:calc(50% - .625em)}.wp-block-latest-posts.columns-2 li:nth-child(2n){margin-right:0}.wp-block-latest-posts.columns-3 li{width:calc(33.33333% - .83333em)}.wp-block-latest-posts.columns-3 li:nth-child(3n){margin-right:0}.wp-block-latest-posts.columns-4 li{width:calc(25% - .9375em)}.wp-block-latest-posts.columns-4 li:nth-child(4n){margin-right:0}.wp-block-latest-posts.columns-5 li{width:calc(20% - 1em)}.wp-block-latest-posts.columns-5 li:nth-child(5n){margin-right:0}.wp-block-latest-posts.columns-6 li{width:calc(16.66667% - 1.04167em)}.wp-block-latest-posts.columns-6 li:nth-child(6n){margin-right:0}}.wp-block-latest-posts__post-author,.wp-block-latest-posts__post-date{display:block;color:#555;font-size:.8125em}.wp-block-latest-posts__post-excerpt{margin-top:.5em;margin-bottom:1em}.wp-block-latest-posts__featured-image a{display:inline-block}.wp-block-latest-posts__featured-image img{height:auto;width:auto}.wp-block-latest-posts__featured-image.alignleft{margin-right:1em}.wp-block-latest-posts__featured-image.alignright{margin-left:1em}.wp-block-latest-posts__featured-image.aligncenter{margin-bottom:1em;text-align:center}.block-editor-image-alignment-control__row .components-base-control__field{display:flex;justify-content:space-between;align-items:center}.block-editor-image-alignment-control__row .components-base-control__field .components-base-control__label{margin-bottom:0}ol.has-background,ul.has-background{padding:1.25em 2.375em}.wp-block-media-text{ + /*!rtl:begin:ignore*/direction:ltr; + /*!rtl:end:ignore*/display:-ms-grid;display:grid;-ms-grid-columns:50% 1fr;grid-template-columns:50% 1fr;-ms-grid-rows:auto;grid-template-rows:auto}.wp-block-media-text.has-media-on-the-right{-ms-grid-columns:1fr 50%;grid-template-columns:1fr 50%}.wp-block-media-text.is-vertically-aligned-top .wp-block-media-text__content,.wp-block-media-text.is-vertically-aligned-top .wp-block-media-text__media{-ms-grid-row-align:start;align-self:start}.wp-block-media-text.is-vertically-aligned-center .wp-block-media-text__content,.wp-block-media-text.is-vertically-aligned-center .wp-block-media-text__media,.wp-block-media-text .wp-block-media-text__content,.wp-block-media-text .wp-block-media-text__media{-ms-grid-row-align:center;align-self:center}.wp-block-media-text.is-vertically-aligned-bottom .wp-block-media-text__content,.wp-block-media-text.is-vertically-aligned-bottom .wp-block-media-text__media{-ms-grid-row-align:end;align-self:end}.wp-block-media-text .wp-block-media-text__media{ + /*!rtl:begin:ignore*/-ms-grid-column:1;grid-column:1;-ms-grid-row:1;grid-row:1; + /*!rtl:end:ignore*/margin:0}.wp-block-media-text .wp-block-media-text__content{direction:ltr; + /*!rtl:begin:ignore*/-ms-grid-column:2;grid-column:2;-ms-grid-row:1;grid-row:1; + /*!rtl:end:ignore*/padding:0 8%;word-break:break-word}.wp-block-media-text.has-media-on-the-right .wp-block-media-text__media{ + /*!rtl:begin:ignore*/-ms-grid-column:2;grid-column:2;-ms-grid-row:1;grid-row:1 + /*!rtl:end:ignore*/}.wp-block-media-text.has-media-on-the-right .wp-block-media-text__content{ + /*!rtl:begin:ignore*/-ms-grid-column:1;grid-column:1;-ms-grid-row:1;grid-row:1 + /*!rtl:end:ignore*/}.wp-block-media-text__media img,.wp-block-media-text__media video{max-width:unset;width:100%;vertical-align:middle}.wp-block-media-text.is-image-fill figure.wp-block-media-text__media{height:100%;min-height:250px;background-size:cover}.wp-block-media-text.is-image-fill figure.wp-block-media-text__media>img{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}@media (max-width:600px){.wp-block-media-text.is-stacked-on-mobile{-ms-grid-columns:100%!important;grid-template-columns:100%!important}.wp-block-media-text.is-stacked-on-mobile .wp-block-media-text__media{-ms-grid-column:1;grid-column:1;-ms-grid-row:1;grid-row:1}.wp-block-media-text.is-stacked-on-mobile .wp-block-media-text__content{-ms-grid-column:1;grid-column:1;-ms-grid-row:2;grid-row:2}}.wp-block-navigation:not(.has-background) .wp-block-navigation__container .wp-block-navigation-link:not(.has-text-color){color:#1e1e1e}.wp-block-navigation:not(.has-background) .wp-block-navigation__container .wp-block-navigation__container{background-color:#fff}.items-justified-left>ul{justify-content:flex-start}.items-justified-center>ul{justify-content:center}.items-justified-right>ul{justify-content:flex-end}.wp-block-navigation-link{display:flex;align-items:center;position:relative;margin:0}.wp-block-navigation-link .wp-block-navigation__container:empty{display:none}.wp-block-navigation__container{list-style:none;margin:0;padding-left:0;display:flex;flex-wrap:wrap}.is-vertical .wp-block-navigation__container{display:block}.has-child>.wp-block-navigation-link__content{padding-right:.5em}.has-child .wp-block-navigation__container{border:1px solid rgba(0,0,0,.15);background-color:inherit;color:inherit;position:absolute;left:0;top:100%;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;z-index:2;opacity:0;transition:opacity .1s linear;visibility:hidden}.has-child .wp-block-navigation__container>.wp-block-navigation-link>.wp-block-navigation-link__content{flex-grow:1}.has-child .wp-block-navigation__container>.wp-block-navigation-link>.wp-block-navigation-link__submenu-icon{padding-right:.5em}@media (min-width:782px){.has-child .wp-block-navigation__container{left:1.5em}.has-child .wp-block-navigation__container .wp-block-navigation__container{left:100%;top:-1px}.has-child .wp-block-navigation__container .wp-block-navigation__container:before{content:"";position:absolute;right:100%;height:100%;display:block;width:.5em;background:transparent}.has-child .wp-block-navigation__container .wp-block-navigation-link__submenu-icon svg{transform:rotate(0)}}.has-child:hover{cursor:pointer}.has-child:hover>.wp-block-navigation__container{visibility:visible;opacity:1;display:flex;flex-direction:column}.has-child:focus-within{cursor:pointer}.has-child:focus-within>.wp-block-navigation__container{visibility:visible;opacity:1;display:flex;flex-direction:column}.wp-block-navigation-link__content{color:inherit;text-decoration:none;padding:.5em 1em}.wp-block-navigation-link__content+.wp-block-navigation-link__content{padding-top:0}.has-text-color .wp-block-navigation-link__content{color:inherit}.wp-block-navigation-link__label{word-break:normal;overflow-wrap:break-word}.wp-block-navigation-link__submenu-icon{height:inherit;padding:.375em 1em .375em 0}.wp-block-navigation-link__submenu-icon svg{fill:currentColor}@media (min-width:782px){.wp-block-navigation-link__submenu-icon svg{transform:rotate(90deg)}}.is-small-text{font-size:.875em}.is-regular-text{font-size:1em}.is-large-text{font-size:2.25em}.is-larger-text{font-size:3em}.has-drop-cap:not(:focus):first-letter{float:left;font-size:8.4em;line-height:.68;font-weight:100;margin:.05em .1em 0 0;text-transform:uppercase;font-style:normal}p.has-background{padding:1.25em 2.375em}p.has-text-color a{color:inherit}.wp-block-post-author{display:flex;flex-wrap:wrap}.wp-block-post-author__byline{width:100%;margin-top:0;margin-bottom:0;font-size:.5em}.wp-block-post-author__avatar{margin-right:1em}.wp-block-post-author__bio{margin-bottom:.7em;font-size:.7em}.wp-block-post-author__content{flex-grow:1;flex-basis:0}.wp-block-post-author__name{font-weight:700;margin:0}.wp-block-pullquote{padding:3em 0;margin-left:0;margin-right:0;text-align:center}.wp-block-pullquote.alignleft,.wp-block-pullquote.alignright{max-width:290px}.wp-block-pullquote.alignleft p,.wp-block-pullquote.alignright p{font-size:1.25em}.wp-block-pullquote p{font-size:1.75em;line-height:1.6}.wp-block-pullquote cite,.wp-block-pullquote footer{position:relative}.wp-block-pullquote .has-text-color a{color:inherit}.wp-block-pullquote:not(.is-style-solid-color){background:none}.wp-block-pullquote.is-style-solid-color{border:none}.wp-block-pullquote.is-style-solid-color blockquote{margin-left:auto;margin-right:auto;text-align:left;max-width:60%}.wp-block-pullquote.is-style-solid-color blockquote p{margin-top:0;margin-bottom:0;font-size:2em}.wp-block-pullquote.is-style-solid-color blockquote cite{text-transform:none;font-style:normal}.wp-block-pullquote cite{color:inherit}.wp-block-quote.is-large,.wp-block-quote.is-style-large{margin-bottom:1em;padding:0 1em}.wp-block-quote.is-large p,.wp-block-quote.is-style-large p{font-size:1.5em;font-style:italic;line-height:1.6}.wp-block-quote.is-large cite,.wp-block-quote.is-large footer,.wp-block-quote.is-style-large cite,.wp-block-quote.is-style-large footer{font-size:1.125em;text-align:right}.wp-block-rss.alignleft{margin-right:2em}.wp-block-rss.alignright{margin-left:2em}.wp-block-rss.is-grid{display:flex;flex-wrap:wrap;padding:0;list-style:none}.wp-block-rss.is-grid li{margin:0 1em 1em 0;width:100%}@media (min-width:600px){.wp-block-rss.columns-2 li{width:calc(50% - 1em)}.wp-block-rss.columns-3 li{width:calc(33.33333% - 1em)}.wp-block-rss.columns-4 li{width:calc(25% - 1em)}.wp-block-rss.columns-5 li{width:calc(20% - 1em)}.wp-block-rss.columns-6 li{width:calc(16.66667% - 1em)}}.wp-block-rss__item-author,.wp-block-rss__item-publish-date{display:block;color:#555;font-size:.8125em}.wp-block-search .wp-block-search__inside-wrapper{display:flex;flex:auto;flex-wrap:nowrap;max-width:100%}.wp-block-search .wp-block-search__label{width:100%}.wp-block-search .wp-block-search__input{flex-grow:1;min-width:3em;border:1px solid #949494}.wp-block-search .wp-block-search__button{margin-left:.625em;word-break:normal}.wp-block-search .wp-block-search__button svg{min-width:1.5em;min-height:1.5em}.wp-block-search.wp-block-search__button-only .wp-block-search__button{margin-left:0}.wp-block-search.wp-block-search__button-inside .wp-block-search__inside-wrapper{padding:4px;border:1px solid #949494}.wp-block-search.wp-block-search__button-inside .wp-block-search__inside-wrapper .wp-block-search__input{border-radius:0;border:none;padding:0 0 0 .25em}.wp-block-search.wp-block-search__button-inside .wp-block-search__inside-wrapper .wp-block-search__input:focus{outline:none}.wp-block-search.wp-block-search__button-inside .wp-block-search__inside-wrapper .wp-block-search__button{padding:.125em .5em}.wp-block-separator.is-style-wide{border-bottom-width:1px}.wp-block-separator.is-style-dots{background:none!important;border:none;text-align:center;max-width:none;line-height:1;height:auto}.wp-block-separator.is-style-dots:before{content:"\00b7 \00b7 \00b7";color:currentColor;font-size:1.5em;letter-spacing:2em;padding-left:2em;font-family:serif}.wp-block-custom-logo .aligncenter{display:table}.wp-block-social-links{display:flex;flex-wrap:wrap;justify-content:flex-start;padding-left:0;padding-right:0;text-indent:0;margin-left:0}.wp-block-social-links .wp-social-link a,.wp-block-social-links .wp-social-link a:hover{text-decoration:none;border-bottom:0;box-shadow:none}.wp-social-link{display:block;width:36px;height:36px;border-radius:9999px;margin:0 8px 8px 0;transition:transform .1s ease}@media (prefers-reduced-motion:reduce){.wp-social-link{transition-duration:0s}}.wp-social-link a{padding:6px;display:block;line-height:0;transition:transform .1s ease}.wp-social-link a,.wp-social-link a:active,.wp-social-link a:hover,.wp-social-link a:visited,.wp-social-link svg{color:currentColor;fill:currentColor}.wp-social-link:hover{transform:scale(1.1)}.wp-block-social-links.aligncenter{justify-content:center;display:flex}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link{background-color:#f0f0f0;color:#444}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-amazon{background-color:#f90;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-bandcamp{background-color:#1ea0c3;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-behance{background-color:#0757fe;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-codepen{background-color:#1e1f26;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-deviantart{background-color:#02e49b;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-dribbble{background-color:#e94c89;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-dropbox{background-color:#4280ff;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-etsy{background-color:#f45800;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-facebook{background-color:#1778f2;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-fivehundredpx{background-color:#000;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-flickr{background-color:#0461dd;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-foursquare{background-color:#e65678;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-github{background-color:#24292d;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-goodreads{background-color:#eceadd;color:#382110}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-google{background-color:#ea4434;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-instagram{background-color:#f00075;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-lastfm{background-color:#e21b24;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-linkedin{background-color:#0d66c2;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-mastodon{background-color:#3288d4;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-medium{background-color:#02ab6c;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-meetup{background-color:#f6405f;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-pinterest{background-color:#e60122;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-pocket{background-color:#ef4155;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-reddit{background-color:#fe4500;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-skype{background-color:#0478d7;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-snapchat{background-color:#fefc00;color:#fff;stroke:#000}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-soundcloud{background-color:#ff5600;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-spotify{background-color:#1bd760;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-tumblr{background-color:#011835;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-twitch{background-color:#6440a4;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-twitter{background-color:#1da1f2;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-vimeo{background-color:#1eb7ea;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-vk{background-color:#4680c2;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-wordpress{background-color:#3499cd;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-yelp{background-color:#d32422;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-youtube{background-color:red;color:#fff}.wp-block-social-links.is-style-logos-only .wp-social-link{background:none;padding:4px}.wp-block-social-links.is-style-logos-only .wp-social-link svg{width:28px;height:28px}.wp-block-social-links.is-style-logos-only .wp-social-link-amazon{color:#f90}.wp-block-social-links.is-style-logos-only .wp-social-link-bandcamp{color:#1ea0c3}.wp-block-social-links.is-style-logos-only .wp-social-link-behance{color:#0757fe}.wp-block-social-links.is-style-logos-only .wp-social-link-codepen{color:#1e1f26}.wp-block-social-links.is-style-logos-only .wp-social-link-deviantart{color:#02e49b}.wp-block-social-links.is-style-logos-only .wp-social-link-dribbble{color:#e94c89}.wp-block-social-links.is-style-logos-only .wp-social-link-dropbox{color:#4280ff}.wp-block-social-links.is-style-logos-only .wp-social-link-etsy{color:#f45800}.wp-block-social-links.is-style-logos-only .wp-social-link-facebook{color:#1778f2}.wp-block-social-links.is-style-logos-only .wp-social-link-fivehundredpx{color:#000}.wp-block-social-links.is-style-logos-only .wp-social-link-flickr{color:#0461dd}.wp-block-social-links.is-style-logos-only .wp-social-link-foursquare{color:#e65678}.wp-block-social-links.is-style-logos-only .wp-social-link-github{color:#24292d}.wp-block-social-links.is-style-logos-only .wp-social-link-goodreads{color:#382110}.wp-block-social-links.is-style-logos-only .wp-social-link-google{color:#ea4434}.wp-block-social-links.is-style-logos-only .wp-social-link-instagram{color:#f00075}.wp-block-social-links.is-style-logos-only .wp-social-link-lastfm{color:#e21b24}.wp-block-social-links.is-style-logos-only .wp-social-link-linkedin{color:#0d66c2}.wp-block-social-links.is-style-logos-only .wp-social-link-mastodon{color:#3288d4}.wp-block-social-links.is-style-logos-only .wp-social-link-medium{color:#02ab6c}.wp-block-social-links.is-style-logos-only .wp-social-link-meetup{color:#f6405f}.wp-block-social-links.is-style-logos-only .wp-social-link-pinterest{color:#e60122}.wp-block-social-links.is-style-logos-only .wp-social-link-pocket{color:#ef4155}.wp-block-social-links.is-style-logos-only .wp-social-link-reddit{color:#fe4500}.wp-block-social-links.is-style-logos-only .wp-social-link-skype{color:#0478d7}.wp-block-social-links.is-style-logos-only .wp-social-link-snapchat{color:#fff;stroke:#000}.wp-block-social-links.is-style-logos-only .wp-social-link-soundcloud{color:#ff5600}.wp-block-social-links.is-style-logos-only .wp-social-link-spotify{color:#1bd760}.wp-block-social-links.is-style-logos-only .wp-social-link-tumblr{color:#011835}.wp-block-social-links.is-style-logos-only .wp-social-link-twitch{color:#6440a4}.wp-block-social-links.is-style-logos-only .wp-social-link-twitter{color:#1da1f2}.wp-block-social-links.is-style-logos-only .wp-social-link-vimeo{color:#1eb7ea}.wp-block-social-links.is-style-logos-only .wp-social-link-vk{color:#4680c2}.wp-block-social-links.is-style-logos-only .wp-social-link-wordpress{color:#3499cd}.wp-block-social-links.is-style-logos-only .wp-social-link-yelp{background-color:#d32422;color:#fff}.wp-block-social-links.is-style-logos-only .wp-social-link-youtube{color:red}.wp-block-social-links.is-style-pill-shape .wp-social-link{width:auto}.wp-block-social-links.is-style-pill-shape .wp-social-link a{padding-left:16px;padding-right:16px}.wp-block-spacer{clear:both}p.wp-block-subhead{font-size:1.1em;font-style:italic;opacity:.75}.wp-block-table{overflow-x:auto}.wp-block-table table{width:100%}.wp-block-table .has-fixed-layout{table-layout:fixed;width:100%}.wp-block-table .has-fixed-layout td,.wp-block-table .has-fixed-layout th{word-break:break-word}.wp-block-table.aligncenter,.wp-block-table.alignleft,.wp-block-table.alignright{display:table;width:auto}.wp-block-table.aligncenter td,.wp-block-table.aligncenter th,.wp-block-table.alignleft td,.wp-block-table.alignleft th,.wp-block-table.alignright td,.wp-block-table.alignright th{word-break:break-word}.wp-block-table .has-subtle-light-gray-background-color{background-color:#f3f4f5}.wp-block-table .has-subtle-pale-green-background-color{background-color:#e9fbe5}.wp-block-table .has-subtle-pale-blue-background-color{background-color:#e7f5fe}.wp-block-table .has-subtle-pale-pink-background-color{background-color:#fcf0ef}.wp-block-table.is-style-stripes{border-spacing:0;border-collapse:inherit;background-color:transparent;border-bottom:1px solid #f0f0f0}.wp-block-table.is-style-stripes tbody tr:nth-child(odd){background-color:#f0f0f0}.wp-block-table.is-style-stripes.has-subtle-light-gray-background-color tbody tr:nth-child(odd){background-color:#f3f4f5}.wp-block-table.is-style-stripes.has-subtle-pale-green-background-color tbody tr:nth-child(odd){background-color:#e9fbe5}.wp-block-table.is-style-stripes.has-subtle-pale-blue-background-color tbody tr:nth-child(odd){background-color:#e7f5fe}.wp-block-table.is-style-stripes.has-subtle-pale-pink-background-color tbody tr:nth-child(odd){background-color:#fcf0ef}.wp-block-table.is-style-stripes td,.wp-block-table.is-style-stripes th{border-color:transparent}.wp-block-text-columns,.wp-block-text-columns.aligncenter{display:flex}.wp-block-text-columns .wp-block-column{margin:0 1em;padding:0}.wp-block-text-columns .wp-block-column:first-child{margin-left:0}.wp-block-text-columns .wp-block-column:last-child{margin-right:0}.wp-block-text-columns.columns-2 .wp-block-column{width:50%}.wp-block-text-columns.columns-3 .wp-block-column{width:33.33333%}.wp-block-text-columns.columns-4 .wp-block-column{width:25%}.wp-block-video{margin-left:0;margin-right:0}.wp-block-video video{max-width:100%}@supports ((position:-webkit-sticky) or (position:sticky)){.wp-block-video [poster]{object-fit:cover}}.wp-block-video.aligncenter{text-align:center}.wp-block-video figcaption{margin-top:.5em;margin-bottom:1em}.wp-block-post-featured-image a{display:inline-block}:root .has-pale-pink-background-color{background-color:#f78da7}:root .has-vivid-red-background-color{background-color:#cf2e2e}:root .has-luminous-vivid-orange-background-color{background-color:#ff6900}:root .has-luminous-vivid-amber-background-color{background-color:#fcb900}:root .has-light-green-cyan-background-color{background-color:#7bdcb5}:root .has-vivid-green-cyan-background-color{background-color:#00d084}:root .has-pale-cyan-blue-background-color{background-color:#8ed1fc}:root .has-vivid-cyan-blue-background-color{background-color:#0693e3}:root .has-vivid-purple-background-color{background-color:#9b51e0}:root .has-white-background-color{background-color:#fff}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-cyan-bluish-gray-background-color{background-color:#abb8c3}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-black-background-color{background-color:#000}:root .has-pale-pink-color{color:#f78da7}:root .has-vivid-red-color{color:#cf2e2e}:root .has-luminous-vivid-orange-color{color:#ff6900}:root .has-luminous-vivid-amber-color{color:#fcb900}:root .has-light-green-cyan-color{color:#7bdcb5}:root .has-vivid-green-cyan-color{color:#00d084}:root .has-pale-cyan-blue-color{color:#8ed1fc}:root .has-vivid-cyan-blue-color{color:#0693e3}:root .has-vivid-purple-color{color:#9b51e0}:root .has-white-color{color:#fff}:root .has-very-light-gray-color{color:#eee}:root .has-cyan-bluish-gray-color{color:#abb8c3}:root .has-very-dark-gray-color{color:#313131}:root .has-black-color{color:#000}:root .has-vivid-cyan-blue-to-vivid-purple-gradient-background{background:linear-gradient(135deg,#0693e3,#9b51e0)}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-light-green-cyan-to-vivid-green-cyan-gradient-background{background:linear-gradient(135deg,#7adcb4,#00d082)}:root .has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background:linear-gradient(135deg,#fcb900,#ff6900)}:root .has-luminous-vivid-orange-to-vivid-red-gradient-background{background:linear-gradient(135deg,#ff6900,#cf2e2e)}:root .has-very-light-gray-to-cyan-bluish-gray-gradient-background{background:linear-gradient(135deg,#eee,#a9b8c3)}:root .has-cool-to-warm-spectrum-gradient-background{background:linear-gradient(135deg,#4aeadc,#9778d1 20%,#cf2aba 40%,#ee2c82 60%,#fb6962 80%,#fef84c)}:root .has-blush-light-purple-gradient-background{background:linear-gradient(135deg,#ffceec,#9896f0)}:root .has-blush-bordeaux-gradient-background{background:linear-gradient(135deg,#fecda5,#fe2d2d 50%,#6b003e)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-luminous-dusk-gradient-background{background:linear-gradient(135deg,#ffcb70,#c751c0 50%,#4158d0)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-pale-ocean-gradient-background{background:linear-gradient(135deg,#fff5cb,#b6e3d4 50%,#33a7b5)}:root .has-electric-grass-gradient-background{background:linear-gradient(135deg,#caf880,#71ce7e)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root .has-link-color a{color:#00e;color:var(--wp--style--color--link,#00e)}.has-small-font-size{font-size:.8125em}.has-normal-font-size,.has-regular-font-size{font-size:1em}.has-medium-font-size{font-size:1.25em}.has-large-font-size{font-size:2.25em}.has-huge-font-size,.has-larger-font-size{font-size:2.625em}.has-text-align-center{text-align:center}.has-text-align-left{text-align:left}.has-text-align-right{text-align:right}#end-resizable-editor-section{display:none}.aligncenter{clear:both} + diff --git a/wp-content/themes/tortuga/assets/css/custom-fonts.css b/wp-content/themes/tortuga/assets/css/custom-fonts.css new file mode 100644 index 0000000..f58986f --- /dev/null +++ b/wp-content/themes/tortuga/assets/css/custom-fonts.css @@ -0,0 +1,96 @@ +/* + * Embed Theme Fonts + * + * Font Face code generated with the great Google Webfonts Helper by Mario Ranftl + * https://github.com/majodev/google-webfonts-helper/ + * + * @package Tortuga + */ + +/* open-sans-regular - latin-ext_latin */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local('Open Sans Regular'), local('OpenSans-Regular'), + url('../fonts/open-sans-v15-latin-ext_latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('../fonts/open-sans-v15-latin-ext_latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* open-sans-italic - latin-ext_latin */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + font-display: swap; + src: local('Open Sans Italic'), local('OpenSans-Italic'), + url('../fonts/open-sans-v15-latin-ext_latin-italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('../fonts/open-sans-v15-latin-ext_latin-italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* open-sans-700 - latin-ext_latin */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + font-display: swap; + src: local('Open Sans Bold'), local('OpenSans-Bold'), + url('../fonts/open-sans-v15-latin-ext_latin-700.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('../fonts/open-sans-v15-latin-ext_latin-700.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + + /* open-sans-700italic - latin-ext_latin */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 700; + font-display: swap; + src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), + url('../fonts/open-sans-v15-latin-ext_latin-700italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('../fonts/open-sans-v15-latin-ext_latin-700italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* titillium-web-regular - latin-ext_latin */ +@font-face { + font-family: 'Titillium Web'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local('Titillium Web Regular'), local('TitilliumWeb-Regular'), + url('../fonts/titillium-web-v6-latin-ext_latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('../fonts/titillium-web-v6-latin-ext_latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* titillium-web-italic - latin-ext_latin */ +@font-face { + font-family: 'Titillium Web'; + font-style: italic; + font-weight: 400; + font-display: swap; + src: local('Titillium Web Italic'), local('TitilliumWeb-Italic'), + url('../fonts/titillium-web-v6-latin-ext_latin-italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('../fonts/titillium-web-v6-latin-ext_latin-italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* titillium-web-700 - latin-ext_latin */ +@font-face { + font-family: 'Titillium Web'; + font-style: normal; + font-weight: 700; + font-display: swap; + src: local('Titillium Web Bold'), local('TitilliumWeb-Bold'), + url('../fonts/titillium-web-v6-latin-ext_latin-700.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('../fonts/titillium-web-v6-latin-ext_latin-700.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* titillium-web-700italic - latin-ext_latin */ +@font-face { + font-family: 'Titillium Web'; + font-style: italic; + font-weight: 700; + font-display: swap; + src: local('Titillium Web Bold Italic'), local('TitilliumWeb-BoldItalic'), + url('../fonts/titillium-web-v6-latin-ext_latin-700italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('../fonts/titillium-web-v6-latin-ext_latin-700italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} diff --git a/wp-content/themes/tortuga/assets/css/customizer.css b/wp-content/themes/tortuga/assets/css/customizer.css new file mode 100644 index 0000000..b748df5 --- /dev/null +++ b/wp-content/themes/tortuga/assets/css/customizer.css @@ -0,0 +1,149 @@ +/* + * Customizer CSS + * + * Adjusts styling for theme option controls in the Customizer + * + * @package Tortuga + */ + +.customize-control-checkbox { + margin-bottom: 4px; +} + +#customize-control-tortuga_theme_options-retina_logo, +#customize-control-tortuga_theme_options-site_description, +#customize-control-tortuga_theme_options-theme_links, +#customize-control-tortuga_theme_options-pro_version, +#customize-control-tortuga_theme_options-magazine_blocks { + margin-bottom: 16px; +} + +#customize-control-tortuga_theme_options-blog_description, +#customize-control-tortuga_theme_options-post_layout, +#customize-control-tortuga_theme_options-excerpt_length, +#customize-control-tortuga_theme_options-read_more_text, +#customize-control-tortuga_theme_options-blog_magazine_widgets_title, +#customize-control-tortuga_theme_options-single_post_headline, +#customize-control-tortuga_theme_options-featured_images, +#customize-control-tortuga_theme_options-slider_category, +#customize-control-tortuga_theme_options-slider_limit, +#customize-control-tortuga_theme_options-slider_animation { + margin-top: 16px; +} + +#customize-control-tortuga_theme_options-retina_logo_title, +#customize-control-tortuga_theme_options-postmeta_headline, +#customize-control-tortuga_theme_options-blog_magazine_widgets_title, +#customize-control-tortuga_theme_options-single_post_headline, +#customize-control-tortuga_theme_options-featured_images, +#customize-control-tortuga_theme_options-slider_activate { + margin-bottom: 0; +} + +#customize-control-tortuga_theme_options-blog_description textarea { + height: 4em; +} + +/* Magazine Widgets Button Controls */ +#customize-theme-controls #magazine-widgets-buttons .add-new-widget { + margin-bottom: 10px; +} + +#customize-theme-controls #magazine-widgets-buttons .add-new-magazine-widget::before, +#available-widgets [id*='widget-tpl-tortuga-magazine-'] .widget-title::before { + content: "\f116"; +} + +body.adding-widget #magazine-widgets-buttons .add-new-magazine-widget::before, +body.adding-widget.adding-magazine-widget #magazine-widgets-buttons .button.add-new-widget::before { + transform: rotate(0deg); +} + +body.adding-widget #magazine-widgets-buttons .add-new-magazine-widget, +body.adding-widget.adding-magazine-widget #magazine-widgets-buttons .button.add-new-widget { + background: #f7f7f7; + border-color: #ccc; + box-shadow: 0 1px 0 #ccc; + color: #555; + cursor: not-allowed; + opacity: 0.2; + pointer-events: none; +} + +body.adding-widget.adding-magazine-widget #magazine-widgets-buttons .add-new-magazine-widget { + background: #eee; + border-color: #929793; + box-shadow: 0 2px 5px -3px rgba(0, 0, 0, 0.5) inset; + color: #32373c; + cursor: pointer; + opacity: 1; + pointer-events: auto; +} + +/* Magazine Homepage Available Sections */ +.adding-magazine-widget #available-widgets #available-widgets-list > div, +.adding-magazine-widget #available-widgets #available-widgets-filter { + display: none !important; + visibility: hidden; +} + +.adding-magazine-widget #available-widgets { + width: 400px; + left: -401px; +} + +.adding-magazine-widget #available-widgets #available-widgets-list { + top: 0; + border-top: none; +} + +.adding-magazine-widget #available-widgets #available-widgets-list [id*='widget-tpl-tortuga-magazine-'] { + display: block !important; + visibility: visible; +} + +.adding-magazine-widget #available-widgets .widget-tpl { + float: left; + clear: left; + padding-left: 15px; + width: 100%; + box-sizing: border-box; +} + +.adding-magazine-widget #available-widgets .widget-tpl .widget-title::before { + display: none; +} + +.adding-magazine-widget #available-widgets .widget-tpl .widget-top::before { + display: block; + float: left; + font-size: 1px; + content: " "; + width: 120px; + height: 75px; + border: 1px solid #ccc; + margin: 0 15px 0 0; +} + +.adding-magazine-widget #available-widgets [id*='widget-tpl-tortuga-magazine-'] .widget-top::before { + background-size: 100%; + background-repeat: no-repeat; + background-position: center; + background-color: #f2f2f2; +} + +.adding-magazine-widget #available-widgets [id*='widget-tpl-tortuga-magazine-posts-columns'] .widget-top::before { + background-image: url( '../images/magazine-columns.png' ); +} + +.adding-magazine-widget #available-widgets [id*='widget-tpl-tortuga-magazine-posts-grid'] .widget-top::before { + background-image: url( '../images/magazine-grid.png' ); +} + +.adding-magazine-widget #available-widgets [id*='widget-tpl-tortuga-magazine-posts-boxed'] .widget-top::before { + background-image: url( '../images/magazine-horizontal-box.png' ); +} + +.adding-magazine-widget #available-widgets [id*='widget-tpl-tortuga-magazine-vertical-box'] .widget-top::before { + background-image: url( '../images/magazine-vertical-box.png' ); +} diff --git a/wp-content/themes/tortuga/assets/css/editor-style.css b/wp-content/themes/tortuga/assets/css/editor-style.css new file mode 100644 index 0000000..e663263 --- /dev/null +++ b/wp-content/themes/tortuga/assets/css/editor-style.css @@ -0,0 +1,354 @@ +/* + * Editor Style CSS + * + * Add styling for the Visual Editor + * + * @package Tortuga + */ + +/*-------------------------------------------------------------- +>>> TABLE OF CONTENTS: +---------------------------------------------------------------- +1.0 - Container +2.0 - Typography +3.0 - Elements +4.0 - Alignments +5.0 - Captions +6.0 - Galleries +7.0 - Shortcodes + + +/*-------------------------------------------------------------- +# 1.0 - Container +--------------------------------------------------------------*/ +body { + margin: 0.5em 1.5em; + max-width: 830px; +} + +/*-------------------------------------------------------------- +# 2.0 - Typography +--------------------------------------------------------------*/ +body { + color: #303030; + font-size: 17px; + font-size: 1.0625rem; + font-family: 'Open Sans', Tahoma, Arial; + line-height: 1.75; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + clear: both; +} + +p { + margin-bottom: 1.5em; +} + +dfn, +cite, +em, +i { + font-style: italic; +} + +blockquote { + margin: 0 1.5em; +} + +address { + margin: 0 0 1.5em; +} + +pre { + overflow: auto; + margin-bottom: 1.6em; + padding: 1.6em; + max-width: 100%; + background: #eee; + font-size: 15px; + font-size: 0.9375rem; + font-family: "Courier 10 Pitch", Courier, monospace; + line-height: 1.6; +} + +code, +kbd, +tt, +var { + font-size: 15px; + font-size: 0.9375rem; + font-family: Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace; +} + +abbr, +acronym { + border-bottom: 1px dotted #666; + cursor: help; +} + +mark, +ins { + background: #fff9c0; + text-decoration: none; +} + +big { + font-size: 125%; +} + +/*-------------------------------------------------------------- +# 3.0 - Elements +--------------------------------------------------------------*/ +html { + box-sizing: border-box; +} + +*, +*:before, +*:after { /* Inherit box-sizing to make it easier to change the property for components that leverage other behavior; see http://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/ */ + box-sizing: inherit; +} + +blockquote { + margin: 0 0 1.5em; + padding: 0.05em 1.25em 1em; + border: 1px solid #ddd; + border-left: 3px solid #dd5533; + color: #777; + font-style: italic; + font-size: 18px; + font-size: 1.125rem; +} + +blockquote cite, +blockquote small { + display: block; + margin-top: 1em; + color: #404040; + font-size: 16px; + font-size: 1rem; + line-height: 1.75; +} + +blockquote cite:before, +blockquote small:before { + content: "\2014\00a0"; +} + +blockquote em, +blockquote i, +blockquote cite { + font-style: normal; +} + +blockquote > :last-child { + margin-bottom: 0.5em; +} + +hr { + margin-bottom: 1.5em; + height: 1px; + border: 0; + background-color: #ccc; +} + +ul, +ol { + margin: 0 0 1.5em; + padding: 0 0 0 1.25em; +} + +ul { + list-style: disc; +} + +ol { + list-style: decimal; +} + +li > ul, +li > ol { + margin-bottom: 0; + margin-left: 1.5em; +} + +dt { + font-weight: bold; +} + +dd { + margin: 0 0 1.5em; +} + +img { + max-width: 100%; /* Adhere to container width. */ + height: auto; /* Make sure images are scaled correctly. */ +} + +table { + margin: 0 0 1.5em; + width: 100%; + border: none; + table-layout: fixed; +} + +th, +td { + padding: 0.3em 0.6em; + border: 1px solid #ddd; +} + +a { + color: #dd5533; + text-decoration: none; +} + +a:link, +a:visited { + color: #dd5533; +} + +a:hover, +a:focus, +a:active { + color: #303030; +} + +a:focus { + outline: thin dotted; +} + +a:hover, +a:active { + outline: 0; +} + +/*-------------------------------------------------------------- +# 4.0 - Alignments +--------------------------------------------------------------*/ +.alignleft { + display: inline; + float: left; + margin-right: 1.5em; +} + +.alignright { + display: inline; + float: right; + margin-left: 1.5em; +} + +.aligncenter { + display: block; + clear: both; + margin-right: auto; + margin-left: auto; +} + + +/*-------------------------------------------------------------- +# 5.0 - Captions +--------------------------------------------------------------*/ +.wp-caption { + margin-bottom: 1.5em; + max-width: 100%; +} + +.wp-caption img[class*="wp-image-"] { + display: block; + margin: 0 auto; +} + +.wp-caption-text { + text-align: center; +} + +.wp-caption .wp-caption-text { + margin: 0.8075em 0; +} + +/*-------------------------------------------------------------- +# 6.0 - Galleries +--------------------------------------------------------------*/ +.gallery { + margin-bottom: 1.25em; +} + +.gallery-item { + display: inline-block; + box-sizing: border-box; + margin: 0; + padding: 0.75em 1em 0 0; + width: 100%; + vertical-align: top; + text-align: center; +} + +.gallery-columns-2 .gallery-item { + max-width: 50%; +} + +.gallery-columns-3 .gallery-item { + max-width: 33.33%; +} + +.gallery-columns-4 .gallery-item { + max-width: 25%; +} + +.gallery-columns-5 .gallery-item { + max-width: 20%; +} + +.gallery-columns-6 .gallery-item { + max-width: 16.66%; +} + +.gallery-columns-7 .gallery-item { + max-width: 14.28%; +} + +.gallery-columns-8 .gallery-item { + max-width: 12.5%; +} + +.gallery-columns-9 .gallery-item { + max-width: 11.11%; +} + +.gallery-caption { + display: block; + font-size: 13px; + font-size: 0.8125rem; +} + +/*-------------------------------------------------------------- +# 7.0 - Shortcodes +--------------------------------------------------------------*/ +.wp-audio-shortcode a, +.wp-playlist a { + box-shadow: none; +} + +.mce-content-body .wp-audio-playlist { + margin: 0; + padding-bottom: 0; +} + +.mce-content-body .wp-playlist-tracks { + margin-top: 0; +} + +.mce-content-body .wp-playlist-item { + padding: 10px 0; +} + +.mce-content-body .wp-playlist-item-length { + top: 10px; +} diff --git a/wp-content/themes/tortuga/assets/css/flexslider.css b/wp-content/themes/tortuga/assets/css/flexslider.css new file mode 100644 index 0000000..fe996f8 --- /dev/null +++ b/wp-content/themes/tortuga/assets/css/flexslider.css @@ -0,0 +1,256 @@ +/* + * jQuery FlexSlider v2.5.0 + * http://www.woothemes.com/flexslider/ + * + * Copyright 2012 WooThemes + * Free to use under the GPLv2 and later license. + * http://www.gnu.org/licenses/gpl-2.0.html + * + * Contributing author: Tyler Smith (@mbmufffin) + * + * @package Tortuga + */ + +/* ==================================================================================================================== + * RESETS + * ====================================================================================================================*/ +.zeeflex-container a:hover, +.zeeflex-slider a:hover, +.zeeflex-container a:focus, +.zeeflex-slider a:focus { + outline: none; +} +.zeeslides, +.zeeslides > li, +.zeeflex-control-nav, +.zeeflex-direction-nav { + margin: 0; + padding: 0; + list-style: none; +} +.zeeflex-pauseplay span { + text-transform: capitalize; +} + +/* ==================================================================================================================== + * BASE STYLES + * ====================================================================================================================*/ +.zeeflexslider { + margin: 0; + padding: 0; +} +.zeeflexslider .zeeslides > li { + display: none; + -webkit-backface-visibility: hidden; +} +.zeeflexslider .zeeslides img { + display: block; + width: 100%; +} +.zeeflexslider .zeeslides:after { + display: block; + visibility: hidden; + clear: both; + height: 0; + content: "\0020"; + line-height: 0; +} +html[xmlns] .zeeflexslider .zeeslides { + display: block; +} +* html .zeeflexslider .zeeslides { + height: 1%; +} +.no-js .zeeflexslider .zeeslides > li:first-child { + display: block; +} + +/* ==================================================================================================================== + * Tortuga Slider Theme + * ====================================================================================================================*/ + +.post-slider-container { + overflow: hidden; +} + +.post-slider-wrap { + position: relative; +} + +.post-slider, .zeeflexslider .zeeslides { + zoom: 1; +} + +.post-slider .zeeslide { + position: relative; +} + +.zeeflex-viewport { + max-height: 2000px; + transition: all 1s ease; +} + +.post-slider .zeeslide .slide-image-wrap { + float: left; + margin: 0; + padding: 0; + width: 65%; + background: #e5e5e5; +} + +.post-slider .zeeslide .slide-image { + margin: auto; + padding: 0; + max-width: 100%; + max-height: 420px; + width: auto; + height: auto; + vertical-align: top; +} + +.post-slider .zeeslide .slide-content { + float: right; + box-sizing: border-box; + padding: 0 1.5em; + width: 35%; +} + +.post-slider .zeeslide .slide-content .read-more { + position: absolute; + bottom: 0; + left: 65%; +} + +.post-slider .zeeslide .slide-content .read-more .more-link { + margin-left: 1.5em; + padding: 0.5em 1em; + max-height: 40px; +} + +.post-slider-controls { + clear: left; +} + +/* Direction Nav */ +.post-slider-controls .zeeflex-direction-nav { + position: absolute; + right: 0; + bottom: 0; + *height: 0; +} + +.post-slider-controls .zeeflex-direction-nav a { + position: absolute; + z-index: 10; + display: block; + margin: -40px 0 0 -80px; + width: 40px; + height: 40px; + background: #dd5533; + color: #fff; + text-align: left; + font-size: 0; + cursor: pointer; + transition: all 0.4s ease; +} + +.post-slider-controls .zeeflex-direction-nav a:hover { + background: #303030; + text-decoration: none; +} + +.post-slider-controls .zeeflex-direction-nav a:before { + display: inline-block; + color: #fff; + vertical-align: text-bottom; + text-decoration: inherit; + font: normal 28px/1 Genericons; + -webkit-font-smoothing: antialiased; +} + +.post-slider-controls .zeeflex-direction-nav a.zeeflex-next:before { + margin: 0.25em; + content: '\f431'; + -webkit-transform:rotate(270deg); + -moz-transform:rotate(270deg); + -o-transform:rotate(270deg); + -ms-transform:rotate(270deg); +} + +.post-slider-controls .zeeflex-direction-nav a.zeeflex-prev:before { + margin: 0.3em; + content: '\f431'; + -webkit-transform:rotate(90deg); + -moz-transform:rotate(90deg); + -o-transform:rotate(90deg); + -ms-transform:rotate(90deg); +} + +.post-slider-controls .zeeflex-direction-nav .zeeflex-next { + left: 42px; +} + + +/*-------------------------------------------------------------- +# Media Queries +--------------------------------------------------------------*/ + +@media only screen and (max-width: 75em) { + .post-slider .zeeslide .entry-content { + display: none; + } + +} + +@media only screen and (max-width: 60em) { + .post-slider .zeeslide .read-more { + display: none; + } + +} + +@media only screen and (max-width: 55em) { + .post-slider .zeeslide .slide-image-wrap { + float: none; + padding: 0; + width: 100%; + } + + .post-slider .zeeslide .slide-content { + float: none; + padding: 1em 0 0; + width: 100%; + } + + .post-slider .zeeslide .entry-content { + display: block; + } + + .post-slider .zeeslide .slide-content .read-more { + position: static; + bottom: auto; + left: auto; + display: block; + } + + .post-slider .zeeslide .slide-content .read-more .more-link { + margin-left: 0; + } + +} + +@media only screen and (max-width: 25em) { + .post-slider .zeeslide .read-more .more-link { + margin-bottom: 4em; + } + + .post-slider-controls .zeeflex-direction-nav { + right: auto; + left: 0; + } + + .post-slider-controls .zeeflex-direction-nav a { + margin-left: 0; + } + +} diff --git a/wp-content/themes/tortuga/assets/css/gutenberg-styles.css b/wp-content/themes/tortuga/assets/css/gutenberg-styles.css new file mode 100644 index 0000000..f4e585d --- /dev/null +++ b/wp-content/themes/tortuga/assets/css/gutenberg-styles.css @@ -0,0 +1,389 @@ +/* + * Gutenberg Editor Style CSS + * + * Add styling for the Gutenberg Editor + * + * @package Tortuga + */ + +/*-------------------------------------------------------------- +>>> TABLE OF CONTENTS: +---------------------------------------------------------------- +1.0 - Editor +2.0 - Typography +3.0 - Blocks +4.0 - Text Colors +5.0 - Background Colors + +/*-------------------------------------------------------------- +# 1.0 - Editor +--------------------------------------------------------------*/ +body.block-editor-page .edit-post-visual-editor .editor-post-title__block, +.wp-block { + max-width: 860px; +} + +.edit-post-visual-editor .editor-post-title__block .editor-post-title__input { + color: #dd5533; + text-transform: uppercase; + font-weight: normal; + font-size: 28px; + font-size: 1.75rem; + font-family: 'Titillium Web', Tahoma, Arial; + line-height: 1.4; +} + +/*-------------------------------------------------------------- +# 2.0 - Typography +--------------------------------------------------------------*/ +.editor-styles-wrapper > * { + color: #303030; + font-size: 17px; + font-size: 1.0625rem; + font-family: 'Open Sans', Tahoma, Arial; + line-height: 1.75; +} + +.editor-styles-wrapper .wp-block p { + font-size: 17px; + font-size: 1.0625rem; + margin-bottom: 1.5em; +} + +.editor-styles-wrapper a { + color: #dd5533; +} + +.editor-styles-wrapper .has-text-color a { + color: inherit; +} + +.editor-styles-wrapper pre { + overflow: auto; + padding: 1.5em; + border: 1px solid #e5e5e5; + background: #f5f5f5; + font-size: 15px; + font-size: 0.9375rem; + font-family: "Courier 10 Pitch", Courier, monospace; + line-height: 1.6; +} + +.editor-styles-wrapper .wp-block h1, +.editor-styles-wrapper .wp-block h2, +.editor-styles-wrapper .wp-block h3, +.editor-styles-wrapper .wp-block h4, +.editor-styles-wrapper .wp-block h5, +.editor-styles-wrapper .wp-block h6 { + clear: both; + margin: 0.75em 0; + line-height: 1.4; +} + +.editor-styles-wrapper .wp-block h1 { + font-size: 36px; + font-size: 2.25rem; +} + +.editor-styles-wrapper .wp-block h2 { + font-size: 28px; + font-size: 1.75rem; +} + +.editor-styles-wrapper .wp-block h3 { + font-size: 24px; + font-size: 1.5rem; +} + +.editor-styles-wrapper .wp-block h4 { + font-size: 22px; + font-size: 1.375rem; +} + +.editor-styles-wrapper .wp-block h5 { + font-size: 20px; + font-size: 1.25rem; +} + +.editor-styles-wrapper .wp-block h6 { + font-size: 19px; + font-size: 1.1875rem; +} + +/*-------------------------------------------------------------- +# 3.0 - Blocks +--------------------------------------------------------------*/ + +/* Separator */ +.wp-block-separator { + margin-bottom: 1.5em; + height: 2px; + border: none; + background-color: #ddd; +} + +/* Quote */ +.wp-block-quote { + margin: 0 0 1.5em; + padding: 1em 1.25em; + border: 1px solid #ddd; + border-left: 3px solid #dd5533; + color: #777; + font-style: italic; + font-size: 18px; + font-size: 1.125rem; +} + +.wp-block-quote:not(.is-large):not(.is-style-large) { + padding-left: 1.25em; + border: 1px solid #ddd; + border-left: 3px solid #dd5533; +} + +.wp-block-quote__citation, +.wp-block-quote cite, +.wp-block-quote footer { + display: block; + margin-top: 1em; + color: #404040; + font-size: 16px; + font-size: 1rem; + font-style: normal; + line-height: 1.75; +} + +.wp-block-quote__citation:before, +.wp-block-quote cite:before, +.wp-block-quote footer:before { + content: "\2014\00a0"; +} + +.wp-block-quote.is-style-large { + border: none; + margin: 0 0 1.5em; + padding: 0; + font-size: 28px; + font-style: italic; +} + +.wp-block-quote.is-style-large p { + margin-bottom: 0.5em; + font-size: inherit; + font-style: inherit; + line-height: inherit; +} + +/* Pullquote */ +.wp-block-pullquote { + margin-bottom: 1.5em; + padding: 1.5em 0; + border-bottom: 3px solid #ddd; + border-top: 3px solid #ddd; +} + +.wp-block-pullquote blockquote { + border-left: none; + margin: 0; + padding: 0; + font-size: 28px; +} + +.wp-block-pullquote blockquote p { + margin-bottom: 0.5em; +} + +.wp-block-pullquote.alignleft { + margin-right: 1.5em; +} + +.wp-block-pullquote.alignright { + margin-left: 1.5em; +} + +/* Cover */ +.editor-styles-wrapper p.wp-block-cover-text { + margin-top: 0; + margin-bottom: 0; + font-size: 2em; + line-height: 1.25; +} + +/* Table */ +.wp-block-table td, +.wp-block-table th { + padding: 0; + border: 1px solid #ddd; +} + +.wp-block-table__cell-content { + padding: 0.3em 0.6em; +} + +/* Captions */ +.blocks-gallery-caption, +.wp-block-embed figcaption, +.wp-block-image figcaption { + margin-top: 0.3em; + margin-bottom: 1em; + color: #555; + font-size: 13px; + font-size: 0.8125rem; + text-align: center; +} + +/* Latest Posts */ +.wp-block-latest-posts.wp-block-latest-posts__list { + margin: 0; + padding: 0; +} + +/*-------------------------------------------------------------- +# 4.0 - Text Colors +--------------------------------------------------------------*/ +.has-primary-color { + color: #dd5533; +} + +.has-white-color { + color: #ffffff; +} + +.has-light-gray-color { + color: #f0f0f0; +} + +.has-dark-gray-color { + color: #777777; +} + +.has-black-color { + color: #303030; +} + +/*-------------------------------------------------------------- +# 5.0 - Background Colors +--------------------------------------------------------------*/ +.has-primary-background-color { + background-color: #dd5533; +} + +.has-white-background-color { + background-color: #ffffff; +} + +.has-light-gray-background-color { + background-color: #f0f0f0; +} + +.has-dark-gray-background-color { + background-color: #777777; +} + +.has-black-background-color { + background-color: #303030; +} + +/*-------------------------------------------------------------- +# 6.0 - Magazine Blocks +--------------------------------------------------------------*/ +:root { + --tz-column-gap: 1.5em; +} + +.edit-post-visual-editor .tz-magazine-block .tz-entry-image { + margin-bottom: 0.5em; +} + +.edit-post-visual-editor .tz-magazine-block .tz-entry-title { + font-family: 'Titillium Web', Tahoma, Arial; + line-height: 1.4; + font-size: 22px; + font-size: 1.375rem; + text-transform: uppercase; + font-weight: normal; +} + +.edit-post-visual-editor .tz-magazine-block .tz-entry-title a:link, +.edit-post-visual-editor .tz-magazine-block .tz-entry-title a:visited { + color: #dd5533; + text-decoration: none; + transition: all 0.2s ease; +} + +.edit-post-visual-editor .tz-magazine-block .tz-entry-title a:hover, +.edit-post-visual-editor .tz-magazine-block .tz-entry-title a:active { + color: #303030; +} + +.edit-post-visual-editor .tz-magazine-block .tz-magazine-grid-columns-3 .tz-entry-title { + font-size: 17px; + font-size: 1.0625rem; +} + +.edit-post-visual-editor .tz-magazine-block .tz-magazine-grid-columns-4 .tz-entry-title, +.edit-post-visual-editor .tz-magazine-block .tz-magazine-thumbnail-list .tz-entry-title { + font-size: 16px; + font-size: 1rem; +} + +.edit-post-visual-editor .tz-magazine-block .tz-entry-meta { + margin: 0.1em 0; + color: #303030; + font-size: 14px; + font-size: 0.875rem; + text-decoration: none; +} + +.edit-post-visual-editor .tz-magazine-block .tz-entry-meta a:link, +.edit-post-visual-editor .tz-magazine-block .tz-entry-meta a:visited { + color: #303030; +} + +.edit-post-visual-editor .tz-magazine-block .tz-entry-meta a:hover, +.edit-post-visual-editor .tz-magazine-block .tz-entry-meta a:active { + color: #777; +} + +.edit-post-visual-editor .tz-magazine-block .tz-meta-field { + margin-right: 1.5em; +} + +.edit-post-visual-editor .tz-magazine-block .tz-meta-field a { + text-decoration: none; +} + +.edit-post-visual-editor .tz-magazine-block .tz-entry-content { + margin-top: 1em; + font-size: 16px; + font-size: 1rem; +} + +.edit-post-visual-editor .tz-magazine-block .tz-read-more { + margin: 1em 0 0; +} + +.edit-post-visual-editor .tz-magazine-block .tz-more-link { + display: inline-block; + margin: 0; + padding: 0.6em 1em; + background: #dd5533; + color: #fff; + text-decoration: none; + font-size: 15px; + font-size: 0.9375rem; + transition: all 0.2s ease; +} + +.edit-post-visual-editor .tz-magazine-block .tz-more-link:after { + content: " \00BB"; +} + +.edit-post-visual-editor .tz-magazine-block .tz-more-link:link, +.edit-post-visual-editor .tz-magazine-block .tz-more-link:visited { + color: #fff; +} + +.edit-post-visual-editor .tz-magazine-block .tz-more-link:hover, +.edit-post-visual-editor .tz-magazine-block .tz-more-link:active { + background: #303030; +} diff --git a/wp-content/themes/tortuga/assets/css/safari-flexbox-fixes.css b/wp-content/themes/tortuga/assets/css/safari-flexbox-fixes.css new file mode 100644 index 0000000..d6da4db --- /dev/null +++ b/wp-content/themes/tortuga/assets/css/safari-flexbox-fixes.css @@ -0,0 +1,23 @@ +/* + * Safari Flexbox CSS Fixes + * + * @package Tortuga + */ + +/* Fix Flexbox issues for Safari 6.1-10.0 */ +@media screen and (min-color-index:0) and(-webkit-min-device-pixel-ratio:0) { + @media { + .post-layout-columns .post-wrapper .post-column { + margin-right: -1px; + } + } +} + +/* Fix Flexbox issues for Safari 10.1+ */ +@media not all and (min-resolution:.001dpcm) { + @media { + .post-layout-columns .post-wrapper .post-column { + margin-right: -1px; + } + } +} diff --git a/wp-content/themes/tortuga/assets/css/theme-info.css b/wp-content/themes/tortuga/assets/css/theme-info.css new file mode 100644 index 0000000..f9825dd --- /dev/null +++ b/wp-content/themes/tortuga/assets/css/theme-info.css @@ -0,0 +1,144 @@ +/* + * Theme Info CSS + * + * CSS Stylesheet for Theme Info page on Appearance -> Theme Info + * + * @package Tortuga + */ + +.theme-info-wrap { + position: relative; + margin: 25px 40px 0 20px; + max-width: 1050px; +} +.theme-info-wrap img { + max-width: 100%; +} + +/* Clearing Floats */ +.theme-info-wrap .clearfix:before, .theme-info-wrap .clearfix:after { + display: table; + content: " "; +} +.theme-info-wrap .clearfix:after { + clear: both; +} +.theme-info-wrap .clearfix { + *zoom: 1; /* For IE 6/7 only */ +} + +/* Columns */ +.theme-info-wrap .columns-wrapper { + margin-right: -4em; +} +.theme-info-wrap .columns-wrapper .column { + float: left; + box-sizing: border-box; + padding-right: 4em; +} +.theme-info-wrap .columns-wrapper .column-half { + width: 50%; +} +.theme-info-wrap .columns-wrapper .column-third { + width: 33.3333333333333%; +} +.theme-info-wrap .columns-wrapper .column-quarter { + width: 25%; +} + +/* Font Styles */ +.theme-info-wrap h3 { + margin: 1em 0 0.6em; + font-size: 1.8em; + line-height: 1.5em; +} +.theme-info-wrap h4 { + margin: 0.2em 0; + font-size: 1.4em; +} + +/* Theme Info Header */ +.theme-info-wrap h1 { + margin: 0.2em 0 0 0; + color: #333333; + font-weight: 400; + font-size: 3.0em; + line-height: 1.2em; +} +.theme-info-wrap .theme-description { + margin: 1em 0; + min-height: 60px; + color: #777777; + font-weight: 400; + font-size: 1.4em; + line-height: 1.6em; +} + +/* Important Links */ +.theme-info-wrap .important-links p strong { + margin-right: 1em; +} +.theme-info-wrap .important-links p a { + padding: 0 1em; +} +.theme-info-wrap .important-links p .social-icons { + float: right; +} +.theme-info-wrap .important-links p a span { + display: inline-block; + width: 24px; + height: 24px; + color: #333; + vertical-align: text-bottom; + text-decoration: inherit; + text-decoration: none; + font-weight: normal; + font-style: normal; + font-size: 24px; + font-family: 'Genericons'; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.theme-info-wrap .important-links p a .genericon-mail:hover { + color: #aaa; +} +.theme-info-wrap .important-links p a .genericon-facebook:hover { + color: #3b5998; +} +.theme-info-wrap .important-links p a .genericon-twitter:hover { + color: #00aced; +} + +/* Getting Started */ +#getting-started { + margin: 2em 0; +} +#getting-started .section { + margin: 2em 0 4em; +} +#getting-started .section .about { + color: #777777; + font-size: 1.2em; + line-height: 1.6em; +} + +/* More Features */ +#more-features .section { + margin: 1em 0 3em; +} +#more-features .section .about { + color: #777777; + font-size: 1.2em; + line-height: 1.6em; +} + +/* Theme Author */ +#theme-author { + margin: 1em 0; +} +#theme-author p { + color: #777777; + font-size: 1.2em; + line-height: 1.6em; +} diff --git a/wp-content/themes/tortuga/assets/css/themezee-related-posts.css b/wp-content/themes/tortuga/assets/css/themezee-related-posts.css new file mode 100644 index 0000000..c0bec25 --- /dev/null +++ b/wp-content/themes/tortuga/assets/css/themezee-related-posts.css @@ -0,0 +1,261 @@ +/* + * Themezee Related Posts CSS + * https://themezee.com/plugins/related-posts/ + * + * Copyright(C) 2015, ThemeZee.com - support@themezee.com + * License: GPL v3 + * License URI: http://www.gnu.org/licenses/gpl-3.0.html + * + * @package Tortuga + */ + +/*-------------------------------------------------------------- +# General Styling +---------------------------------------------------------------- */ +.related-posts { + padding: 1em 1.5em 0; +} + +.related-posts-title { + font-size: 20px; + font-size: 1.25rem; +} + +/*-------------------------------------------------------------- +# List Layout +---------------------------------------------------------------- */ +ul.related-posts-list { + margin: 1em 0 0; + padding: 0; + list-style: none; +} + +.related-posts-list li { + margin: 0 0 2em; + padding: 0; + list-style: none; +} + +.related-posts-list li .entry-header { + margin-top: 0.25em; +} + +.related-posts-list li .entry-title { + font-size: 20px; + font-size: 1.25rem; +} + +.related-posts-list li .wp-post-image { + float: left; + margin: 0 1em 0 0; + padding: 0; + max-width: 20%; + height: auto; + border: none; +} + + +/*-------------------------------------------------------------- +# Grid Layouts +---------------------------------------------------------------- */ +.related-posts-grid { + margin: 1em 0 0; +} + +.related-posts-columns { + margin-right: -1em; +} + +.related-posts-columns .related-post-column { + float: left; + box-sizing: border-box; + margin-bottom: 2em; + padding-right: 2em; +} + +.related-posts-two-columns .related-post-column { + width: 50%; +} + +.related-posts-three-columns .related-post-column { + width: 33.3333333333333%; +} + +.related-posts-four-columns .related-post-column { + width: 25%; +} + +.related-posts-two-columns .related-post-column:nth-child(2n + 1) { + clear: left; +} + +.related-posts-three-columns .related-post-column:nth-child(3n + 1) { + clear: left; +} + +.related-posts-four-columns .related-post-column:nth-child(4n + 1) { + clear: left; +} + +.related-posts-two-columns .related-post-column .entry-title { + font-size: 24px; + font-size: 1.5rem; +} + +.related-posts-three-columns .related-post-column .entry-title { + font-size: 16px; + font-size: 1rem; +} + +.related-posts-four-columns .related-post-column .entry-title { + font-size: 15px; + font-size: 0.9375rem; +} + +.related-posts-three-columns .related-post-column .entry-meta, +.related-posts-four-columns .related-post-column .entry-meta { + font-size: 12px; + font-size: 0.75rem; +} + + +.related-posts-four-columns .related-post-column .entry-meta .meta-date, +.related-posts-four-columns .related-post-column .entry-meta .meta-author { + display: block; +} + +.related-posts-four-columns .related-post-column .entry-meta .meta-date:after { + display: none; +} + +.related-posts-columns .related-post-column .wp-post-image { + margin: 0 0 0.5em 0; + padding: 0; + border: none; +} + +/*-------------------------------------------------------------- +# Media Queries +---------------------------------------------------------------- */ + +@media only screen and (max-width: 80em) { + /* Columns */ + .related-posts-two-columns .related-post-column .entry-title { + font-size: 22px; + font-size: 1.375rem; + } + +} + +@media only screen and (max-width: 70em) { + /* Columns */ + .related-posts-two-columns .related-post-column .entry-title { + font-size: 20px; + font-size: 1.25rem; + } + +} + +@media only screen and (max-width: 50em) { + /* Columns */ + .related-posts-four-columns .related-post-column { + width: 50%; + } + + .related-posts-four-columns .related-post-column:nth-child(2n + 1) { + clear: left; + } + + .related-posts-two-columns .related-post-column .entry-title, + .related-posts-four-columns .related-post-column .entry-title { + font-size: 18px; + font-size: 1.125rem; + } + + .related-posts-two-columns .related-post-column .entry-meta { + font-size: 12px; + font-size: 0.75rem; + } + + .related-posts-four-columns .related-post-column .entry-meta .meta-date, + .related-posts-four-columns .related-post-column .entry-meta .meta-author { + display: inline; + } + + .related-posts-four-columns .related-post-column .entry-meta .meta-date:after { + display: inline-block; + } + + /* List */ + .related-posts-list li .wp-post-image { + max-width: 25%; + } + + .related-posts-list li .entry-header { + margin-top: 0; + } + + .related-posts-list li .entry-title { + font-size: 18px; + font-size: 1.125rem; + } +} + +@media only screen and (max-width: 40em) { + .related-posts-two-columns .related-post-column .entry-title, + .related-posts-four-columns .related-post-column .entry-title { + font-size: 16px; + font-size: 1rem; + } + +} + +@media only screen and (max-width: 35em) { + /* Columns */ + .related-posts-three-columns { + margin: 0; + } + + .related-posts-three-columns .related-post-column { + float: none; + padding-right: 0; + width: 100%; + } + +} + +@media only screen and (max-width: 25em) { + /* Columns */ + .related-posts-two-columns, + .related-posts-four-columns { + margin: 0; + } + + .related-posts-two-columns .related-post-column, + .related-posts-four-columns .related-post-column { + float: none; + padding-right: 0; + width: 100%; + } + + /* List */ + .related-posts-list li .wp-post-image { + float: none; + margin: 0 0 0.5em 0; + max-width: 100%; + } + +} + +@media only screen and (max-width: 20em) { + .related-posts .entry-meta .meta-date, + .related-posts .entry-meta .meta-author { + display: block; + margin: 0; + } + + .related-posts-four-columns .related-post-column .entry-meta .meta-date:after { + display: none; + } + +} diff --git a/wp-content/themes/tortuga/assets/css/themezee-related-posts.css?ver=20160421 b/wp-content/themes/tortuga/assets/css/themezee-related-posts.css?ver=20160421 new file mode 100644 index 0000000..c0bec25 --- /dev/null +++ b/wp-content/themes/tortuga/assets/css/themezee-related-posts.css?ver=20160421 @@ -0,0 +1,261 @@ +/* + * Themezee Related Posts CSS + * https://themezee.com/plugins/related-posts/ + * + * Copyright(C) 2015, ThemeZee.com - support@themezee.com + * License: GPL v3 + * License URI: http://www.gnu.org/licenses/gpl-3.0.html + * + * @package Tortuga + */ + +/*-------------------------------------------------------------- +# General Styling +---------------------------------------------------------------- */ +.related-posts { + padding: 1em 1.5em 0; +} + +.related-posts-title { + font-size: 20px; + font-size: 1.25rem; +} + +/*-------------------------------------------------------------- +# List Layout +---------------------------------------------------------------- */ +ul.related-posts-list { + margin: 1em 0 0; + padding: 0; + list-style: none; +} + +.related-posts-list li { + margin: 0 0 2em; + padding: 0; + list-style: none; +} + +.related-posts-list li .entry-header { + margin-top: 0.25em; +} + +.related-posts-list li .entry-title { + font-size: 20px; + font-size: 1.25rem; +} + +.related-posts-list li .wp-post-image { + float: left; + margin: 0 1em 0 0; + padding: 0; + max-width: 20%; + height: auto; + border: none; +} + + +/*-------------------------------------------------------------- +# Grid Layouts +---------------------------------------------------------------- */ +.related-posts-grid { + margin: 1em 0 0; +} + +.related-posts-columns { + margin-right: -1em; +} + +.related-posts-columns .related-post-column { + float: left; + box-sizing: border-box; + margin-bottom: 2em; + padding-right: 2em; +} + +.related-posts-two-columns .related-post-column { + width: 50%; +} + +.related-posts-three-columns .related-post-column { + width: 33.3333333333333%; +} + +.related-posts-four-columns .related-post-column { + width: 25%; +} + +.related-posts-two-columns .related-post-column:nth-child(2n + 1) { + clear: left; +} + +.related-posts-three-columns .related-post-column:nth-child(3n + 1) { + clear: left; +} + +.related-posts-four-columns .related-post-column:nth-child(4n + 1) { + clear: left; +} + +.related-posts-two-columns .related-post-column .entry-title { + font-size: 24px; + font-size: 1.5rem; +} + +.related-posts-three-columns .related-post-column .entry-title { + font-size: 16px; + font-size: 1rem; +} + +.related-posts-four-columns .related-post-column .entry-title { + font-size: 15px; + font-size: 0.9375rem; +} + +.related-posts-three-columns .related-post-column .entry-meta, +.related-posts-four-columns .related-post-column .entry-meta { + font-size: 12px; + font-size: 0.75rem; +} + + +.related-posts-four-columns .related-post-column .entry-meta .meta-date, +.related-posts-four-columns .related-post-column .entry-meta .meta-author { + display: block; +} + +.related-posts-four-columns .related-post-column .entry-meta .meta-date:after { + display: none; +} + +.related-posts-columns .related-post-column .wp-post-image { + margin: 0 0 0.5em 0; + padding: 0; + border: none; +} + +/*-------------------------------------------------------------- +# Media Queries +---------------------------------------------------------------- */ + +@media only screen and (max-width: 80em) { + /* Columns */ + .related-posts-two-columns .related-post-column .entry-title { + font-size: 22px; + font-size: 1.375rem; + } + +} + +@media only screen and (max-width: 70em) { + /* Columns */ + .related-posts-two-columns .related-post-column .entry-title { + font-size: 20px; + font-size: 1.25rem; + } + +} + +@media only screen and (max-width: 50em) { + /* Columns */ + .related-posts-four-columns .related-post-column { + width: 50%; + } + + .related-posts-four-columns .related-post-column:nth-child(2n + 1) { + clear: left; + } + + .related-posts-two-columns .related-post-column .entry-title, + .related-posts-four-columns .related-post-column .entry-title { + font-size: 18px; + font-size: 1.125rem; + } + + .related-posts-two-columns .related-post-column .entry-meta { + font-size: 12px; + font-size: 0.75rem; + } + + .related-posts-four-columns .related-post-column .entry-meta .meta-date, + .related-posts-four-columns .related-post-column .entry-meta .meta-author { + display: inline; + } + + .related-posts-four-columns .related-post-column .entry-meta .meta-date:after { + display: inline-block; + } + + /* List */ + .related-posts-list li .wp-post-image { + max-width: 25%; + } + + .related-posts-list li .entry-header { + margin-top: 0; + } + + .related-posts-list li .entry-title { + font-size: 18px; + font-size: 1.125rem; + } +} + +@media only screen and (max-width: 40em) { + .related-posts-two-columns .related-post-column .entry-title, + .related-posts-four-columns .related-post-column .entry-title { + font-size: 16px; + font-size: 1rem; + } + +} + +@media only screen and (max-width: 35em) { + /* Columns */ + .related-posts-three-columns { + margin: 0; + } + + .related-posts-three-columns .related-post-column { + float: none; + padding-right: 0; + width: 100%; + } + +} + +@media only screen and (max-width: 25em) { + /* Columns */ + .related-posts-two-columns, + .related-posts-four-columns { + margin: 0; + } + + .related-posts-two-columns .related-post-column, + .related-posts-four-columns .related-post-column { + float: none; + padding-right: 0; + width: 100%; + } + + /* List */ + .related-posts-list li .wp-post-image { + float: none; + margin: 0 0 0.5em 0; + max-width: 100%; + } + +} + +@media only screen and (max-width: 20em) { + .related-posts .entry-meta .meta-date, + .related-posts .entry-meta .meta-author { + display: block; + margin: 0; + } + + .related-posts-four-columns .related-post-column .entry-meta .meta-date:after { + display: none; + } + +} diff --git a/wp-content/themes/tortuga/assets/css/themezee-widget-bundle.css b/wp-content/themes/tortuga/assets/css/themezee-widget-bundle.css new file mode 100644 index 0000000..4d08f3b --- /dev/null +++ b/wp-content/themes/tortuga/assets/css/themezee-widget-bundle.css @@ -0,0 +1,176 @@ +/* + * ThemeZee Widget Bundle CSS + * https://themezee.com/plugins/widget-bundle/ + * + * Copyright(C) 2015, ThemeZee.com - support@themezee.com + * License: GPL v3 + * License URI: http://www.gnu.org/licenses/gpl-3.0.html + * + * @package Tortuga + */ + + +/*-------------------------------------------------------------- +# General Styles +---------------------------------------------------------------- */ + +/* Clearing Floats */ +.tzwb-clearfix:before, +.tzwb-clearfix:after { + display: table; + content: " "; +} + +.tzwb-clearfix:after { + clear: both; +} + +.tzwb-clearfix { + *zoom: 1; /* For IE 6/7 only */ +} + + +/*-------------------------------------------------------------- +# Posts List +---------------------------------------------------------------- */ +.tzwb-posts-list li { + clear: left; + margin-bottom: 0.5em; + padding: 0; + list-style: none; +} + +.tzwb-posts-list .tzwb-excerpt p { + margin: 0; + padding: 0; +} + +.tzwb-posts-list .wp-post-image { + float: left; + margin: 0.3em 0.8em 1em 0; + max-width: 90px; + height: auto; +} + +.tzwb-posts-list .tzwb-entry-meta { + font-size: 12px; + font-size: 0.75rem; +} + +/*-------------------------------------------------------------- +# Comments List +---------------------------------------------------------------- */ +.tzwb-comments-list li { + clear: left; + margin-bottom: 0.5em; + padding: 0; + list-style: none; +} + +.tzwb-comments-list .avatar { + float: left; + margin: 0.3em 0.8em 0.8em 0; +} + +.tzwb-comments-list .tzwb-comment-content { + font-style: italic; +} + +.tzwb-comments-list .tzwb-comment-date { + color: #303030; + font-size: 12px; + font-size: 0.75rem; +} + + +/*-------------------------------------------------------------- +# Tabbed Content Widget +---------------------------------------------------------------- */ +.tzwb-tabbed-content .tzwb-tabnavi-wrap { + overflow: auto; + margin: 0; + padding: 0; + list-style: none; +} + +.tzwb-tabbed-content .tzwb-tabnavi { + position: relative; + float: left; + width: 100%; + list-style: none; + list-style-position: outside; +} + +.tzwb-tabbed-content .tzwb-tabnavi li { + position: relative; + float: left; + margin: 0 3px 3px 0; + padding: 0; + list-style: none; +} + +.tzwb-tabbed-content .tzwb-tabnavi li a { + display: block; + margin: 0; + padding: 0.3em 0.8em; + color: #fff; + text-decoration: none; + font-size: 14px; + font-size: 0.875rem; +} + +.tzwb-tabbed-content .tzwb-tabnavi li a:link, +.tzwb-tabbed-content .tzwb-tabnavi li a:visited { + background: #303030; + color: #fff; + transition: all 0.2s ease; +} + +.tzwb-tabbed-content .tzwb-tabnavi li a:hover, +.tzwb-tabbed-content .tzwb-tabnavi li a:active { + background: #dd5533; + text-decoration: none; +} + +.tzwb-tabbed-content .tzwb-tabnavi li a.current-tab { + background: #dd5533; +} + +.tzwb-tabbed-content .tzwb-tabcontent { + margin: 1em 0 0 0; + padding: 0; +} + + +/*-------------------------------------------------------------- +# Social Icons Widget +---------------------------------------------------------------- */ +.tzwb-social-icons .social-icons-menu { + list-style: none; + line-height: 1; +} + +.tzwb-social-icons .social-icons-menu li { + margin: 0 2px 2px 0; +} + +.tzwb-social-icons .social-icons-menu li a { + padding: 0.75em; + background: #dd5533; +} + +.tzwb-social-icons .social-icons-menu li a:before { + font-size: 24px; +} + +.tzwb-social-icons .social-icons-menu li a:hover { + background: #303030; + text-decoration: none; +} + +/*-------------------------------------------------------------- +# Facebook Like Box Widget +---------------------------------------------------------------- */ +.tzwb-facebook-likebox .tzwb-content { + overflow: hidden; +} diff --git a/wp-content/themes/tortuga/assets/fonts/open-sans-v15-latin-ext_latin-700.woff b/wp-content/themes/tortuga/assets/fonts/open-sans-v15-latin-ext_latin-700.woff new file mode 100644 index 0000000..30b4c3f Binary files /dev/null and b/wp-content/themes/tortuga/assets/fonts/open-sans-v15-latin-ext_latin-700.woff differ diff --git a/wp-content/themes/tortuga/assets/fonts/open-sans-v15-latin-ext_latin-700.woff2 b/wp-content/themes/tortuga/assets/fonts/open-sans-v15-latin-ext_latin-700.woff2 new file mode 100644 index 0000000..749a971 Binary files /dev/null and b/wp-content/themes/tortuga/assets/fonts/open-sans-v15-latin-ext_latin-700.woff2 differ diff --git a/wp-content/themes/tortuga/assets/fonts/open-sans-v15-latin-ext_latin-700italic.woff b/wp-content/themes/tortuga/assets/fonts/open-sans-v15-latin-ext_latin-700italic.woff new file mode 100644 index 0000000..7b0a272 Binary files /dev/null and b/wp-content/themes/tortuga/assets/fonts/open-sans-v15-latin-ext_latin-700italic.woff differ diff --git a/wp-content/themes/tortuga/assets/fonts/open-sans-v15-latin-ext_latin-700italic.woff2 b/wp-content/themes/tortuga/assets/fonts/open-sans-v15-latin-ext_latin-700italic.woff2 new file mode 100644 index 0000000..6133af5 Binary files /dev/null and b/wp-content/themes/tortuga/assets/fonts/open-sans-v15-latin-ext_latin-700italic.woff2 differ diff --git a/wp-content/themes/tortuga/assets/fonts/open-sans-v15-latin-ext_latin-italic.woff b/wp-content/themes/tortuga/assets/fonts/open-sans-v15-latin-ext_latin-italic.woff new file mode 100644 index 0000000..4e08d18 Binary files /dev/null and b/wp-content/themes/tortuga/assets/fonts/open-sans-v15-latin-ext_latin-italic.woff differ diff --git a/wp-content/themes/tortuga/assets/fonts/open-sans-v15-latin-ext_latin-italic.woff2 b/wp-content/themes/tortuga/assets/fonts/open-sans-v15-latin-ext_latin-italic.woff2 new file mode 100644 index 0000000..3ca0fa8 Binary files /dev/null and b/wp-content/themes/tortuga/assets/fonts/open-sans-v15-latin-ext_latin-italic.woff2 differ diff --git a/wp-content/themes/tortuga/assets/fonts/open-sans-v15-latin-ext_latin-regular.woff b/wp-content/themes/tortuga/assets/fonts/open-sans-v15-latin-ext_latin-regular.woff new file mode 100644 index 0000000..6ca02c4 Binary files /dev/null and b/wp-content/themes/tortuga/assets/fonts/open-sans-v15-latin-ext_latin-regular.woff differ diff --git a/wp-content/themes/tortuga/assets/fonts/open-sans-v15-latin-ext_latin-regular.woff2 b/wp-content/themes/tortuga/assets/fonts/open-sans-v15-latin-ext_latin-regular.woff2 new file mode 100644 index 0000000..a337154 Binary files /dev/null and b/wp-content/themes/tortuga/assets/fonts/open-sans-v15-latin-ext_latin-regular.woff2 differ diff --git a/wp-content/themes/tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-700.woff b/wp-content/themes/tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-700.woff new file mode 100644 index 0000000..4162a14 Binary files /dev/null and b/wp-content/themes/tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-700.woff differ diff --git a/wp-content/themes/tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-700.woff2 b/wp-content/themes/tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-700.woff2 new file mode 100644 index 0000000..3bd0f09 Binary files /dev/null and b/wp-content/themes/tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-700.woff2 differ diff --git a/wp-content/themes/tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-700italic.woff b/wp-content/themes/tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-700italic.woff new file mode 100644 index 0000000..c43a937 Binary files /dev/null and b/wp-content/themes/tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-700italic.woff differ diff --git a/wp-content/themes/tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-700italic.woff2 b/wp-content/themes/tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-700italic.woff2 new file mode 100644 index 0000000..f433bdb Binary files /dev/null and b/wp-content/themes/tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-700italic.woff2 differ diff --git a/wp-content/themes/tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-italic.woff b/wp-content/themes/tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-italic.woff new file mode 100644 index 0000000..69c2f3f Binary files /dev/null and b/wp-content/themes/tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-italic.woff differ diff --git a/wp-content/themes/tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-italic.woff2 b/wp-content/themes/tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-italic.woff2 new file mode 100644 index 0000000..695983b Binary files /dev/null and b/wp-content/themes/tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-italic.woff2 differ diff --git a/wp-content/themes/tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-regular.woff b/wp-content/themes/tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-regular.woff new file mode 100644 index 0000000..d05cb16 Binary files /dev/null and b/wp-content/themes/tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-regular.woff differ diff --git a/wp-content/themes/tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-regular.woff2 b/wp-content/themes/tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-regular.woff2 new file mode 100644 index 0000000..b2efaac Binary files /dev/null and b/wp-content/themes/tortuga/assets/fonts/titillium-web-v6-latin-ext_latin-regular.woff2 differ diff --git a/wp-content/themes/tortuga/assets/genericons/Genericons.eot b/wp-content/themes/tortuga/assets/genericons/Genericons.eot new file mode 100644 index 0000000..7322565 Binary files /dev/null and b/wp-content/themes/tortuga/assets/genericons/Genericons.eot differ diff --git a/wp-content/themes/tortuga/assets/genericons/Genericons.eot? b/wp-content/themes/tortuga/assets/genericons/Genericons.eot? new file mode 100644 index 0000000..7322565 Binary files /dev/null and b/wp-content/themes/tortuga/assets/genericons/Genericons.eot? differ diff --git a/wp-content/themes/tortuga/assets/genericons/Genericons.svg b/wp-content/themes/tortuga/assets/genericons/Genericons.svg new file mode 100644 index 0000000..4740685 --- /dev/null +++ b/wp-content/themes/tortuga/assets/genericons/Genericons.svg @@ -0,0 +1,537 @@ + + + + + +Created by FontForge 20150618 at Fri Sep 18 10:24:13 2015 + By Joen Asmussen +Copyright (c) 2015, Joen Asmussen + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wp-content/themes/tortuga/assets/genericons/Genericons.ttf b/wp-content/themes/tortuga/assets/genericons/Genericons.ttf new file mode 100644 index 0000000..0174438 Binary files /dev/null and b/wp-content/themes/tortuga/assets/genericons/Genericons.ttf differ diff --git a/wp-content/themes/tortuga/assets/genericons/Genericons.woff b/wp-content/themes/tortuga/assets/genericons/Genericons.woff new file mode 100644 index 0000000..0e7212a Binary files /dev/null and b/wp-content/themes/tortuga/assets/genericons/Genericons.woff differ diff --git a/wp-content/themes/tortuga/assets/genericons/genericons.css b/wp-content/themes/tortuga/assets/genericons/genericons.css new file mode 100644 index 0000000..87cf754 --- /dev/null +++ b/wp-content/themes/tortuga/assets/genericons/genericons.css @@ -0,0 +1,263 @@ +/** + + Genericons + +*/ + + +/* IE8 and below use EOT and allow cross-site embedding. + IE9 uses WOFF which is base64 encoded to allow cross-site embedding. + So unfortunately, IE9 will throw a console error, but it'll still work. + When the font is base64 encoded, cross-site embedding works in Firefox */ +@font-face { + font-family: "Genericons"; + src: url("./Genericons.eot"); + src: url("./Genericons.eot?") format("embedded-opentype"); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: "Genericons"; + src: url("data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAADakAA0AAAAAVqwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAA2iAAAABoAAAAcdeu6KE9TLzIAAAGgAAAARQAAAGBkLHXFY21hcAAAAogAAACWAAABsqlys6FjdnQgAAADIAAAAAQAAAAEAEQFEWdhc3AAADaAAAAACAAAAAj//wADZ2x5ZgAABFQAAC7AAABIkKrsSc5oZWFkAAABMAAAAC8AAAA2C2BCV2hoZWEAAAFgAAAAHQAAACQQuAgGaG10eAAAAegAAACfAAABOFjwU3Jsb2NhAAADJAAAATAAAAEwy4vdrm1heHAAAAGAAAAAIAAAACAA6QEZbmFtZQAAMxQAAAE5AAACN1KGf59wb3N0AAA0UAAAAjAAAAXo9iKXv3jaY2BkYGAAYqUtWvLx/DZfGbg5GEDgkmLVWhj9/ycDAwcbWJyDgQlEAQABJgkgAHjaY2BkYOBgAIIdHAz/fwLZbAyMDKiAFQBE7gLWAAAAAAEAAACXAOgAEAAAAAAAAgAAAAEAAQAAAEAALgAAAAB42mNgYf/MOIGBlYGB1Zh1JgMDoxyEZr7OkMYkxMDAxMDKzAADjAIMCBCQ5prC0MCg8FWcA8TdwQFVg6REgYERAPvTCMQAAAB42i1PsRXCUAg8SAprl7FN4QZqb2WZGRjAIVLrHj4be4ews7OJHAd54cMBd+Af7JHmt3RPYAOHAYFweFhmYE4jlj+uVb8nshCzd/qVeNUCLysG8lgwrojfSW/pcTK6o7rWX82En6HJwIEv+wbi28IwpndxRu/JaJGStHRDq5EB+OKCNumZLlSVl2TnOFVtl9nR5t7woR0QzVT+D7cKLeIAeNpjYGBgZoBgGQZGBhBYA+QxgvksDBOAtAIQsoDoj5yfOD9JflL7zPGF84vkF80vll88v0R+yfxS9lX8/3+wCoZPDJ8EPil8ZvjC8EXgi8IXgy8OXwK+JHwp+Mrw////x/wsfHx8HHxMvJo8Rjw6PGo8CjxSPCI8fDwc3PVQ2/ECRjYGuDJGJiDBhK4A4pXhDABtHClYAAAARAURAAAALAAsACwALABaAIQAzADyAQABHAFGAZQBzgIIArIDTAOkA+AEEgTCBRYFYgW+BjAGwgbkByQHSAeCB+AI2Ao4CowLGgvQDBwM6g08DX4Nug4kDkYOYg6ADsoO7A8yD4gP8hAwEGYQpBDuEUgRshHUEfYSQBJeEnoSlhLEEtwTIBNYE6oT6hQaFC4UShSQFJ4UtBTyFSAVjBW4FegV+hYUFiwWQBZWFmQWchaIFuYXFhdUF4gXyhgEGCwYThh8GNYZEhlCGVgZZhl8GZIZoBnQGhIaShp8GtIa6Br+GzAbVBt+G8Ib/Bw6HGgciBy8HOwdHh1WHXAdmB3eHvYfIB8uHzofSB9WH6of4CA4IMghACFCIcQh4CIGIjoiSCJ8IpYiyCLmIxAjWiPwJCQkSHja1Xx5YFTVvf/53nUm++zJJJnMkpkJJJkss5GFMIQ9w04IS0BZRSJLMIIo1l4XFETQFkVFBKwVrbuWpRaXPOtalZaCPKu1D2yf28NX21qfQubk9z3nzoSAS//+Mbn3nnvuuWc/n+/n+z3fCxHIaEKEJfJMIhKVhJ4GUtP8jCqRz+ufVuQ/NT8jChgkT4ssWmbRz6gK9DU/Ayw+bPKY/B6TZ7TgpuVwN71Unnnm0dHS24QQRSACUYis8XyzST6xEAch4LF5ZJsnKkc9NsDDj2ETXgUikT4iaClNJEBSGoZIP74qa+l//YRfKB5EAEyj4g/ztWBZbslcIEjucqHATOpjkYBXsYo18DNYeOQI3UMvonuOHIHXj+/YcXyHSs7FLGQp+o7sYA8IFq+BpmqKhtk6SDEZinWVWfMsHlLfIkRCgjdPsLpAtMlRUu8CmzVP8HlDEInJmkC+wcbihT54cN/6cePW79Mv/f1E+MUT2zvCM68cOWt7Rwc2pk8TNQ3IWW0gEbuI3yxI7KW9HdtnjbxyZrhj+xPbWX0EYhjcf9h3Jg9gldjBfhLm1af1ERF7BTAEmoxngQDeU35mB/YPsDiFtU0gxChgX2tn8S6FP3zG38O+zMWEVkU1yaYQRCMxt13WblvTT9bcdgpaTsnahlcqUp9owt0Vr2zYc+oUHwN8S2FjwMYV62PNA5+pPhaFc0EP4JhuPr2la4eQCVCsNRvnLac3A9nRNShIBFZPXpciEmHjareZsEbRWNTEBhVvHDasmyniwP7HJ+4AhlsgbmOP7PUsWVA8DFmHuzoSa3avSXR09XZ0HaZfHa7raOARKjm8kWoLdwfuamwHbcqaNVOo1t54V2D3QtA2nsQL1TYePrwRtMTaWUWYhvI0gGlYz5FeldWtgPiwvfW8bpVgAk/cwxqtR/hwhHxeVq9YWNG6duzo0miCHtBgy55TlN/jbYIHFGwyi6IJ6NVO7RG0c7c7ugBDRITMuMlYqovNAFYeuNg4BWPRSBCDBRhsEaKRQJCl5mOvSfmxpqbY3GQSCmYvXjy7s6bVP2WcjI/P4iEUxG7ddWt0brKrC5/P+Yz2fTans2bNjWMvPTwOi8B2Vhtw5pEr+cpyCWabVVAkVQngpGDFtChYcIsQCIYgT1ADQUUNifmQB7g4HIrN6pIdiponhCAYkoJDMd7ucEkOlxK32q02qxIMlAewtuYWQVwLdsg6+fyNbcufpfRunw+CruicxZMm1JYsV4zGfIuUV9+8OH7VzTdfFV80IpSVVZBvMErLS2rHT140JxrJtYfGjRjrFIyl3liplFNkNDlFY6nTmwuKwx0fu6gZfL67aOrZ5W03Pn/SQNiZfrXlIfr62RfrVXeh9JvpoxY4FUt5/eRFm2bsvTy/YvzFdSDK5jq/F8DrrzMpglAxtSFekt2zZ/rmRZPr/WYl1JmVJxdEq6VcX3GhoGY7zaAUuoZ5pNwhrqF5WabyKXVZhW4l/MJZaHhoC28cdiIDKkJ4nxqIiZQittSTBJlKiL8+LogKUe3+mDleLrvAjLhidsRIPBDMAda9LsERkxwCsETlccHiVXx2S4sUD1SBWyIIewRxjzDgk8iBw54n/0w3db0rjt/1ViE9TY/nNXaeue+KFT+Cxz4uSNCP6Bp5+biD/9dsLw0qj8DEq51nG1+if695Cb68Zevjbs19yW+VvZO2LB9yLT1Er4JdsAEsP/85/ZxupEvw+PznPweLNhWq4MY2evS13r0roL03FCq+m/5W2Jx4iP5u/dsQm1SrddTDuw0Xd7lKw+05HqUYSuGfM+nhE/bxIXBCrGAf3Sc0ultay6/9qXZB5lggL5R1FyAeVyEef0Aa8EZR7Qi4kuRz++3helzyOL0wgJfhOL8YXsXtkgNnaIsQrrc7YvE8UGOqllwpVM/Vnvo9pdvoEdpfVTXzgZ+MuPJ5n99dV/vjhyfPTs6uvwVu+TCrcfGm5OQt4R+tsLY3rFJquycX25Yff/vwfT0jH5QDY+vEbavV3KI3b5QrxfqfXbS445E3s4dUtm1a3Dg8XpRILPfm6vUlKD9UjQQH0MGHKG3xDEcZEXbEAz4UIKUIiyg0zwMI+hHk5dCPKlv3yZOWX/TT2VWUpqrYAxUR4SxB6HwNpN6c5jj8Iyt28drRp2lfqmFHl4xPOLZjufLHWK6b4YPIBAMrI9IiYU+Ugejl5YrSbpiQT1+lvX/+s6N6/EXXtsW7nE51/pKKiNMofU2P9h0SJ0ANCJEFs8bHShVRpB+Z/NVeUTASRJ9M2yyIzB6yhKzi2GA3s0HxeXFFF5hjgDMXFKjHuZsNdgtYYvEWMRphQGBA6AjXOwLlPq+kqPXh+tgIiNkVVVHBIiKOxBz2c3F+HGpVjJmjEbENVsDEL7aN7Nn38idXH6T7v9i27Qv6pzNv0x+PFQO3XC8JX/+j+y/gmypIBXkW1VFoBYdslvMkVZjcCMZV9NN7b6H9R8YXF/lX+Lw2S561qhb8T13bbs23WjdOCVzm82GkrVLwycO/OvSeqmHu+w9e/cnL+3pGbvsCJvLSU3mn6YYlUul9fTUhWREeSo30SHv7dkOOklNXNzZcGJoT9Qp+gzu7JL/Qlt3QAUu6Ox9YJQsilHlFWei7SzDBbFXwuiErE6lWVN68M9XQBT3vH2FzXSC3wj9Rlm4ldWQ4G0W73q8hITOh1ZARh5FBLM5+Me7xh20+my/qi4ajYeE9IZAbGLPkmh3T1723++JF9797+do3WncKVqO9oMjucpWblz66ZMmjS0d2j48VSXS/uE9nVJIWDE/fcc2SMYGLd7+3bu37uy+ePPEeyFVzDdmqURIXP/rbRxeXx8Y0Fb3Nk2M9RZ13Kc8jJzFjXTkjCTJxx4YX4R/FPkZF2FQHFYWyxxz02FoUfCbYhPn0ILQ9KExbumxGvL0KqjrkAnpoWkfluKG52fSQJMGEbJvbUxNuLZ++eVkDEPG/bl40oW1h9aS62kmhszsF8/Ir/WF3cSz1n+L187eaSnzFxZbs+GWPr2ZcKT0/Gct0k+ZBKzC91Bg/saCYDoEPiYTVjhG8moIa9dgLbCrWOs672mbSVyVbeCiGHfSbG0ZPg6mto6ZPGyk1PbSpftowbwH9GgAMhixvg3fMyMwy1ZfkGSIW9X0sbpzS2DxpclPjlL4N8NqTB4sqg4XdHtpz4CAcrrQ5h5Re3E5nY2c+isJhGsqFqazGLkkf9kBQwJURDMQtbALEWKWsrD/ZGsFVEULemYdJkQSpeewvyOeJLNWt++MT2xZEqmdctePgksVPeicUeOffqZb+TMqzb71kxuxAc57j6iVrn1005obXfzT/0ZtXTQjOMKuqaBVUn33munj5xBV3/fIvBhJftGnvgfkbPnxx18rm+Qn6wbAN22MPXy08ZfQsj9x6+LLp4e3/0bD49l9B3cFLn76uLTSt+6a7p965yOYszJmSVWgy+u54rnvS7nu3rp9Vr+N4RvYtzvCJAiFPwGYGY3ELn8/AGiXqjbI77AgbEI8Fgmk0x6nD2CRS7TinOWxuYboywE5yBMiFXCIt5+/YliwZX7J12lW/u31a0+W73u5Zd3T3tVOGdC0zl8iCSZDlvNHjtN41Sx/oGjZ1x0XRdn9Odp1r3KjY3GiBwbjG4pAP0NO7BjMH+hn9iuU/dP1icEaTlx0G8c7Ox+9YnYhfdM3td7bdcmyoIc9iSGRZbaYpVy185uZpzctvm7n96zujndGaXVcObZ01+upk5TSLhfpnLNo8BRyw7sgAQRDIXmGBukDei4srn/PeAuS2BeXpq2yF2V9+SR/+MnVFOiDvZecv03d41eUlUW9Xc4gXbyQR+bkP0TuIkwWpYhx/FrPDjCITQxhlVjaAtSAHlaGfpu5bsco7bZ71qvaN1z0152hdxNo8YdiabkPBpsSYG1VioA/SFB1Oh0AZ3HYtlLWvuKLnboOV/p7+agr9+1NPzbu7FB5nbcjoT/mIDd9af0ZBIag27OnjZ+CanoKsl/J7Ac99nL0SgHeJplTgWvbqWgUqEw47kw9xEwoHnDaMeEZNvihvVFwaBb+gs0wF1c0TN93cM3/+ig0XXzSqNfJqVzIZqjapGm2iH9PIrqoqZ/ls+lHMbi8ra2i8boOwNuVLJObO2cKm52D8cJBqjsEX1J+4lQK7O1aANeKr0c05B9bNHkb2b8J5WQlepRSs9iaojw2GELGMvnSKqVBIzf/XvPk0/ez0ZjP932RUJtFkMqqlT+ejCCWn9Lf6TolkbCMqSKg7NY1JsVekA5l3knxp9QOooPSTbeSnZAe5h9xH7icPkoeZNodNsNUq7M+q1KHOoNQpqpWdFBsDFOxOJR9A8QahtgYCwdpANKB3byAYCfIVGIhiZAS7IFobi8bqIqzPo/VxftV/I6A2DrF6B9Ta62rtYbtj4GdjRy37szqsdXYwyXEjOPyyLQ4mv+qPB1UjBGV/VFVx1Pk/Af+E9BkvqVZThSnVCiLgdBZZrADn/RNgIDGKVuEFTC68AAIM5JHOCDArcH2cujJ19mNwpV59EO6kH34sjPv000+hUpA/ph8KjQ9K/5AlWi2oAkjsHVaowIpM54D5A63OzoFjLPt0TUX+HC+AL+GLEhyTZAFkEPCWHew1ngE7H8vOptXpFop6jqwMlgzfgCn07Rd3wmz68M4X9/5pVeoFiLx47+Rdu3ZhaPbOF+//06rz56oF5dwL5GM2V5GJFaCO5uaqVQsSYVTXBJQPDrsUV9I8AjEVgXUEMEzFFKiHWTgDUxiRRmStjdQhVQuUsyj+aoyBcAgUPUI4B8whIRjggocnY1Qcc2MP2T0TSiIqi0GO1w6XiLfsjfStAPXlOINQiAVZlojhEpYZDJjjMYyPK5KCcG+2SxI5yJgfI2T0Dkb8OAc8tpueWLlyidW075r14N4wIbn6rTtmlSdC2KNGEUb+/OVlD4Brodt/KX3/dnHo0I4tV6xrn7vgyWuT2V3tl9AvV14xvCXLsHPlqv9qanEkQxs3RTsstnBBVbS0am4gEDEYzEUFlfXFzki1udghK5VlFTWh8bmohxlt9jGBwFirTTYbi70V9spOj9cvCh0bW8Mza3Js5qmXrBtWPjJsKjaaHRsebp91+0y64TRsuqRp1o43eibdsNAZG9/TTQ899BD9dFxb7qzZUP2MyXwv/fSNdde9DyGdd+rNZLQzzUDvMqxdfRn945139E8Yn9dgm739re6xm9bWY1uzBEiuaLp1Q7j62jtTWaNuGtYz1FfiTV775ALhshdbJlmbWpZfds3637g80+d3fpgMV1uDwxcsnFlcWaZm5zkc44YMbfc4PBZByHGai9v8/haTXYFhlQKUTSh1eQSo9Pnag1aP0yIZi8rcc2pHXhYy5Yy5aHU00l5tsOfVDC+Pb2ieclU0P2flA303f/3WTTeuPXrvZVb3yq3T7qJPrN/QXer8rz27YOU99/7BJQk5t7xL/7x7H/3D+9f//8R1mT73Y3W4ej25BG9cuAjy5BAqSKY8A858HnIJsTiKJ5eI+ngspPiC3kAeJgOXWAZqSMLF0iK6RIe8Wy2aMGb26CZnXlnlitVXdl86K2E2I+waTFa3P1IaWdU+xmzxjB41rACGKdbEiNmTpo+oyxLKW6Z3zpsx0mKRCsKR5NgZ48aXFBeJJmeR0XhKdTQOKc0eP2rMww899bO7N8xzqkPEnKH1M+ffsO3QojmbZ8Qtcm6uqtD/EVS7w+3yuUqzzUKRKycXCr2VeeXV4jOpjwQ5W5It1aMuGzPx+s62Km++ASFJyS+sCCerqxdMm9hYlZP9htG9fNWD9786b/LlTW4hr6QoKz2GiEFXIAYNIddh79hVbgwNMqiRUCwy5iaivseUAtlmBWapCgz+YRqmD9rTgn3gORITJpusg2SINS3zB57bMnQgpo4Mw6QbDiy5auWUiZe//yukq6ZRdZ3r75y69cq2sYteeHB7z4wqekmT1ze8qX368g6Xu9xtKYjEOxdVDvWUOIpqIj5vkXPYsBkzu7ctXzGsIR7tnL1xXsswr6el9dLJ1aFCp8NWUlYV8/pikVlXHrxnVbfYuuzyJQdumNSYN3zFrmff62mfefnGqXeu76xL5lTN6Nn+4AuL5tPftl86e3hzRbDY6bAYjeZ8zCPkLXe7W0I2e3l5dai+FqmIMzhkQtuCS0a3BgMlVrPJ46ofMbTKbvN4orWFRagDJSdNrBkRCnH+jKyIKMzuGGESHXFX1wbwrFQiS+EcJSRUgomjOO94Zp1Gwe6ptyuaPVhkZ0cymmCsgSZGXjFu7lCtt27VwgSoiACeOWMLDAbYG01KpLiu3OAJ6mdM3ZWsqK0QtIvu/3qzbKr2lLTvnD5zrz+Q1Cn927BVDas93KIVJLVkBBmPesxmrGUMq6UPWwSJAY4VYC3TWqK9nKkzCrvzxzidV+0oE1iQWwesdgmsjhgzlyjEqzCzbsRi1e0/gBKO866MXoTpLCimHHILYgXrCtQSgn7R7mD3LpBezx/qyu949nBHvmto/rDbfkL/1hoKjRwZCrXC6HmtrfNaBU9lw5DqshmpLY+C75FH6AePPkY/eOQR8KU+rKiZWVo1pFGuxoEYUb1vWCjvilfoF/QE/eKVtQWllUXrZtTNKDn03/Nks9kGDYXT69qWL2+rmVIn0jOT/vxkycz62LyYaMh3VeZ3dORXuvKHgRJqxeJbW/VzKDS8rHZIQ3B4alnXgctWHOzqOnjiYJdwb03JxOHlDUJ7qCVUnUg9Fe8srq9b+uzGKVM2/mop6n/hkb4Z66oDC43whj07Rx4/pG75HcurJ4Wa6bU5CypCsXlsfSK/Znq6RnwkjuPBjDBM7RX5loUwHDw23VzOu81hU2VPRscKRh1x/aE0ze63e2sA5t03f4w2LwZqzega+bUtW16X7kMaoc7bPX/+7nmw/D6Mlo7Os/ttIS8tm3vPnGjnj0YfPeKpqfHAx5uef3HTZdU/Ptq5a+6cnZ1/qA0dZ/FEryPbP8B5nU/KM3ybb+Lo+jrbxkF+yPZyHBB3IamOOxRkxpn9GyTW7wWSXX76Hn3P35UMwHLZ1DC6wSSr3Kx+VN/iOcrs6Kl9LAF9H/z8hR1Sqc9XKhHdrvUCcqnWgT0WByFG0WTMiduMEHUIt8Ga1Od0O6wULBTDggVWpv4u5NPtqc9hDb0dLt+d+iL1xW61lb5FD0F56lnw0V/RtyAC4+kH9CFxL/0TTIDI2W/o28t66EvQ0rOMt10ghCpzsO0uMoa3XRUFNU9iKoQKeaBrOEwcMr6F65vtb8TNyLCYcqGzMKaZcMuiBxVo+dXZjdbIHFlWrEU1rjMGWaVX5g11Z1vL8suaK4RTXtlpSa2ylcr/dFpLyz6wFouCS5RcFvr3Yp+vGEZk2wtUsmgRpbTFarVV2MyCgTYU5IqyWlkh2xxVVSV09S/tZW5zn0GRcZ4U5jnzDLtyrT5vcbDYk2PhOMX2R9h+0GDtb9BmCPnezY/0bgfHOgFnLd9TYnsdqPw5PDaPGBZ6xd5+wjRETJ7i8jylIRPW+klmLmHJCmPHOdwqZYTMRqCESyFFKBHf7GKApmAwRdg+U5Ldk8weC5+HZcSftmtm2DQza+q7f4hNeCdZTKhsmcQ6cIH8XHf3c/Qs/ZCefX716ufhjrXv3NvZee87a3fRr3buhKw/wdBO+rRKVj+vJ2LJkefji8+fXd2588RnJ3Z27qRf0dcxuUToXPqfnTAV3tPnB9aJ8L1IE957GY7arSLrVQ/rTKmL72ZqTGs+tUfS+B4m/ezUnn7siD2nCBncrmxSTKp0W53JEw3b8LAw45c+rbj+mh4vNlQ+VlhYRqFzBg9NwM5ORvu4xiniOdXrRKYcSODZqWhn2RLStLOYjCVIsbNwIOCkhD2HXkx5fl1cZChpxLrUoqasioxHxS16iZ4mqK0PowJRAnU/VFUJy1JC4RJ1xRO8DMK0KYebmya/s8bSb0AwqFij4pxQETyNVRLcDtTnDn9X5QnJGajr4H3rYpwblaQJZdwohqdhm5g+MmFPOowc1Wb6oZ7OvHtuO5vVmF+/pwGU6GnYM37Q9DVzFsh3NQWi+qY5Xx8zYaZ6tXo1tseNCAcOQB2tRYA4qAFvPt+jUyFurx+BsAt/Fsrmpk6VNzUGvTnWYcLX+4WyA/6uwIFCs7lwf+rkgQCG/cIwnspfU5pnDIWnS88dSJ3c7/cfKGptLTwglGHwoL9rYG1ynC8gJdh3KqCUZjv15W7JjOyOIM9HBEMJhdhHNGq6+9n0+oFhkLVzdd/q9Ue+PLKenQAb/LfVmSe4dHY9eze8mX64fv2AfTpdFm/pBcWRdFGoXtgtUY9NNsHfvlVmauxAngZBE1dT07fKpd+cq5VhsG2cr7cSUsFtVza2FeOJMjj6gXqIOIw4UGzpCv+mOkomIb6S+jf14vKNQKWBKO+QXKxTKaJbNdv/Z9AWNEIMqyIagXe8EZi2FUNVI8aNjgLnXYifMpyl8hL6JfKeL5dSBc4shRwYCjl+WEu3Tnrl3Zcn0lvh8kmvrFjxypQUYWauU/SlhRxbZXyTypf09CyDM3BmWU9PXyVcAT2TZ0yfTG+lW/EKL+3RXzglRDk6n1dn5ofh46uOgDcIjDWyuiOtjDNLeByCFgcE46whqEtk8N7PmSM2KK7zTYkUeWC/ckoAWMBbcucvdm2/qH3FK0lY+8fQdWfJdRpt5M268//eSG3h1YC3u257eAVvWsuaEaf2rEDIgf2eoj2nhJN0L2vTlO3e6ZPhinfhQ54DvMoauDf1Fm/4V13LeRNfWrNgJQdjEBho6b4S2P/M7IX1MwIKo15IaLSX9mqQ4CdIyBfcayxNen+R29HPz8NA+nrFhNbX29eriQl+EhPqBfcaS8PmqJaWKxbEsyjzcLFVGqJ+ziLsKutBhlWIVHJ4wPgZPveTiQ44mo49ySgg0DCB4OxPA76mg4+eQuGJEYoOIOjiX2+KqyACXjMH5w1QirxhBzGy9WrBP5CLQSW0/BD1U/8hWi5M3L9f+jE9mPoUJtL9ggPaQHCkPmXYovMFDbs2i692BN4gMxqj1Ne0PqKJuGAUBpiUGahTvdBLE+f4MeMLRu6TZAT8M3kYi0jhT8TfGQxzF5pedmJVJRLvv16lF98zkDzGdIwCW90OHIoaQfXjfMQ+6u3TaELUUo8vEGak9moLEgs0mIThBQqW3qdBL7acPetbwJ/lskdp/oS5syE2Ztx8VOQ5jPYgDCVS/E1WFegdjDc5uLY5g+a+Gp6IUO4z1aMYcwLeZEGgCnxmphyhmAWi7zm09ZMjdPfvj8I2mAYlr67qJ/Me/Jx+TA880b23G//kjLvE72HREZGsepX+lT5JLz/6BCSh6PMH5/VpPB2X7f3fADEo6ovYG07uo+JCecJ1UlyiLcgsBpZmMXgs6luVeZErZnxzunVZs8PhE76u7L68u5L+H193f4zQj8LC3LHa/LgvMbNrmPTO2AkTxp45ylcVRNmeAQ5MZp/BhtgQ1nkNQwXUXeJc3+RIhqCG6Oth0GB3sMYH1ZAgcBqleJnHFv1tkv7mpVkPbm0E1AoC0S2TmIMOHqi+JmH4S9d/MofFg2/G4i95YyWcSo8dD7U3AWoT/tjwU0IZ28h47PiSOSwCyutLaS3vPd3fivsxVWa8mPLAyzg9Liu7m7sz+bwDTkt8rXGazJ2XOIJrLLRmytRuXDcauzLXpZR2NcP2qxk2MD8lQZuypntqmmy9TJvZnUA2snUBP1HY3Mgjhbp/HIKnyrA+GjGjClHAii+wi+VccsyZSpfT5VPn7IR9Nz733I2Ys0qYNFl7DB/AXVOPrd0FWSnnc2B4jjlTMTxbwPBMPsmWEJIJH8QdMucl9KR2Uj65IEVgr9aLY4Vz1EAGuBQpwsFi48WuBvI10Q82k3GZ4pHionAQZ7CQIZhHEFd1HrMLO0w4iKwJzALi8JjKcIJxDwMTTn34y18E7ZOa0f4/PnTz6UcXrZc3DVs69i8pzfLO+KlLnljF4pRSvP8k1L1xzNP0b1X0jH3zqyDeugvsdPKlrz48Dt+3vDP215euPbKtFBR8SFNMJxGxrZLGW8OWpcb87tL1ZPjDOoG1j89EfzrFWVRP+vC9PsKd3RjSzBASBtZnKtczy9gq5/wgfQGHlN7vM6fXizCM/gu2a9QCa6UH04HuvlE4Mdgw/H33mjW718j30zLEJyLsSZ3Sry0L2VOcPvTwGpbkPG6icj7L8IW7kg1emTL3HUNVCa+QPLceEYnTsSJ3IBu8GAnLisuUdN4ZphzXmTJJ4475gqs/7f2pM2Vd/Mhc8Hi4EEK1Ecmzz8TSCPu48Bj8B2nnRuZHmRFDNKGrA/ycwMqx5zgI/A3QX6T6ZZ9OjCVOm5lE0nM9yzVK5oTKCB0j4kRlumgJ12d1cRiJNUHajsVtTNw+OWizT1UPb2xdVxV67vI9pwolwvWyHWWejYfD1Us3nNrT0srXpqaCKqf9Ye1Wxr+DbGEEA5ERbCdNRFquHEwmP207mqQN9CS8Bm1tnyaPt83e20/2yruSx/ARjKcN4GaPjuNdW2rHXiAMkIHJLpnRKPVc/4t6RWS9Qtym+Af5f+UnuKwRsPCoByQCn1PLLJjFXFTpL+THqYVaOmCWBrO4HRIX2B8UTX8H1zySWyS1EplFf8G8UGHWLGqRH++gv8B3O+BzrssnFFYPxuiYgASEiFRvCllNr8xksYDUJsHTMSxJsHRYFyMm41YCIYE/jQlsDKZ6B3wJRKwe88bEGSxyd9o+Pg8BVyhWTX+Gc5st0syzNE+QNe6STIwiq7zGSBmbAWeJoDsecx5fwG5kTfm2/ucjQZzZNShz4lwTJBl9jx3xsM03+D48SB/8vnthgEylMqE+7cLAgAN0xgP6e0K8awRuB+G2DFbnb+1iZ5CF4ZisG2T4WbeNMEMJs5718TiJObNo6dUu4qM0jvD8GX4FLsg/zASuzRcdVI4YZYownCtKYxlpmQI5K2NWwEyZqOExxfhcwQeYituv2xAydnCGM8U6FjN5Lqev4LEKCiOAIRBEfIc3iF/6cJBv+vQn/eQnn96kcODglnD9mnrzbvqvX5bSf0Ju6S8hm9FEoq97Ja3FMXxOAwBDq8Eg4IIBFJCwesz1FnDe8NZi43SHX0U5vLGqfVypDgoCVk3HLmBmGyZH8OJ2bzzsqHSlMeIc9pQPYI9ej+8rPe1JSDJ10If1/JI5HOnQ+R1lCtxfn/EqI7fgmdjWlkfl8hqBGDECFy3zLmf6JzNHpN6bKwToXIGNEMV1xy1yKMD38Qfn2bDymZgo5c4cePJFue86MKjFNP2MZbNhuUpNsdXI8gaUm/q6TY+5iY84kxBNyGrTs5nVLRCJc41F4apFIjN1+4hYX1/fd4TZo9hU0vT5fBZLi/80zjRNAdFyj7pAXUCq+M6K6ldUixpkRDFoCQTlINMf48G4HIuLcQeictwh2h1+h2rHseaT216vLmikv6tptm95Y4Sz5Y0ttqZa+rvGTwyGTxqhrrbJtuWNkdaRb9xqb6qFOhZNN3H4FU7fam+uOZdSzyA3O4E5NNfoST/RM771dcy4jGM3ucDGYEV9/rwvH4Ab+VWI+fnOaRyUC7+BkOo3n96yaYNweHwf4aHUmPHf+iAidWTL6c3jU2M2bGJX4fCGb/GH4nNypTyjVyCgstXPlrusc4eUfmEsCGGYsEkj4ezRY/XF/SaTwWx1n5srOo8y6SyRxWZEvUx0qGbceoBz8ZTsyxH965GBbxIyOK+7D4n48AwrnmTwftD+QyYtkiELm576dyB6iSkuIAa+nyCDvp/A0tLfT4jAHbwN34u5ZBDm6kbwNNalQRc7x4AAeEZfsXj+OgO6vKoixyOWv4LaFcNcjqnG84rxpH+DihPS4CoMFAm82rj0M0XzL1Gw/0UtUzy+hO1mrR+oxoXzznLhvJMym3TI1zy2MDK3C+edsExH+720V9v7rQlXz4vpSzJooWk5dl55ju/+wodx1m995ZMazFsvKOjskfP0yPPKCH93GfrONa4qB9+uZkDLfqUQjnIPqO8pH170t7ffsf/n825aUlHkLCyKjC52vmUyj5n+fXUSGhqndSdGXrR/XEFBia+k2Du0umpkg7fUaquOpH3hdZ1Xn9Xsp+K8YYYKjrknqRuHzQ0nL0jLEhpZ2hSOvESYwZ6lZcyHupk9I2MHYUzHTOz4RhgVg7AFj6DPb0HNLlzMggqjGimWeQe00/85UamlPuvgtkitYwTeybwu3I7JE6bDvO7/xPrkKtvYTgbTQFsEexnEW8CF0horv35CU/DGZ1+YcP/9E1741caK5gk4ZZeO+c1r97YMHXP33WOGttz7+ktj2Jwgl8BJdafixhWsfw3F7F8iqBbRwQzaQeGyE/Qo1Jw4Kh09cfToCag52/U1kK/lhm3IoRu2QQO8to2+Rl/bBq/RshaJtDCdjOunaTtQEdv9MQpRFLSoxX3LgTjKtTREubBJNxIpiCqsnX0oqges7lEm33UTrcxhhFnz8IRU9lwKbtMfMPp+ux6lP1wP2w+Xn/p3JWvkO8os+4EyLSj+g+oPldoHL8+lOw50/lDJOH1e7mSJGIqm56iMcgzLNRkF5rRgCqIIY/Y0k8CtngyARYJyaEfbc0v6OR7LCWYdpb18CrMPyujxHW0Tqabfp/0ldFzP4z7Vg3OVL8iLfMf752wPIuuTjCzycgdl0Weq5w4WHD0kPsnHrk4mV48dt6Il3ODzNYRbVozjMcB7SsaVxzRSdogDoUEYx/lRNrPSQBrEeYnMv9kT5Fv1wC0jDLgljS2shmHdKdLtDxcxNS/FxaPE51EfSW6Nr1lTPvfiem0wd+K2hguHlDkEurFzZE+Uf1qncEW4j583nwb76c1slxR5h3TeGGq6J6rG6SbTNwQiz8I2FBAn99f1cJRUVBt3QfF5mCmOQWglFOlBH8qkZV+uXr1w6sqFf/0NnQbk+iVz6uouXbt96YK3FG3smHuW3ZinFt20+r6nhV8NH9daWkpb6PFJU28jaTs6kTP7wz4xrHriYYsv7pFna19oFTRRwS6oXnKFikvOtM1b49wim2EQ6+eMYwmYgswRk7MLOJCWxzhxe/s5Vko6Xel7U0j0phaAm00QI/ezZv3KeIOR5HB/ZxuOIMp+i8ljYR8asNk2BEC3DKt+I6BKr+nKDWjf8DHTzS2gm5i1bzROhPFeThNjiqVnDC9shEHjLErjagYztmnny0kz+Y/zZZgjqKgjuLtlMF4j5EONMEJ1jIAyCNRAvhQcAY54cIQQCKoO/MsXWSK8RVkXR3jmCeP5QhnGYaAM8iGuloEazzcEK/HGEccMJYdaIyvMXdNRI48QkDiPEPBtScWkIuboyMdZd6GIzBPFLNnkEsjLkGhT8n1FhcMiFUEAWXbkWnL9geJRzsJch5xX6nCGC8XcGkOhrSJ/Yo9k9Ug2Q/OkZqUgJ2R3j3FdtuidJwO1bl+NSynJrk2Wx3ODxV6Lx2MszbYmY0PlvOxQgbMsz+fMcjsNhaFgnVLamD8kWIUKowEMcpYMTtc1726SsrJHubPUPIMh35rbHBTyLaPrvEaDx1BTWyY4Suoryk2CRxr6LcH9L0mxIMPum/zHp7LCRQaLTSyNueOq2ZdndfogS/VnNcdkVbD7so0VTtHuNNqz1ycFk5wlGLN8pc0em9VkMIH/ZsgxGBTVLDrkItvQfHOJN+AwmbPiVos9x1SgWixyvsliLXQ2O2srKt2uSqfRPKW2oNWUZcpxlIcWz/gJ7X+mPOeWEa3DSgqiLXK2Uc01Fxepdq9FrjMWZEuWxpGjyzplh8mpcBm6V3SrC6SMDfJbPH6Az/t+fcMNv75BFAdfpJM38Ougv7SfJLO79DJUxzlvIF9rYq84YK/BGwNbKyRqArEXUb8vwd6REnwvC+ORa/BYA+lLcDtOIr3PJXD+wqL1PAfbACpILRmmf6+sey4hJ/Po3y2nv5YxIWOLDYd0VHl6wUtpYodI08i/Ru4njWOZLtwYuPqmrh083KfvRQrJtMPI2LXeB5jc6NIkn3fdGIZ8oY5WB7WP29H1gHftWIyw87QHMoRZGdAtzv/2PS1LMps7me+4gejSpI8wBV5EAU55jMhAgmlOeFCSCQHnYXqY41ucY4BGcvX9EKOIOjEEWyS+Y+rzBiEaDCj5oDBfLodubiyDcyYaAp9igf/0+8EP3MtP/G0M2xGjBxPOTv9Ef5c/X9Dy/RjKdya0p6KBQNSvatSBtDPX3xWAclG2jZu+8QyNTkx2xaBNSzjzMbH+VheGOp2J1L/wJX+UkMHfEo4mE0k7mUeW8D2jtE9gC8SZU6DHNBDDfGzZ8A6KiHLlf2C0mdUHrxlQH/D8ueCqDgx1Mpoe9rGN/Sjx0kG2m5MOMiealD4N+tJq2vmX+fq484nwAJKqD9L3Y9Z5wZeMPpCeJ3j7wJ5TkJk2OJPoB6f2pMXKmeQgZTiZmTsC9skpNaH08v00ou/Lh42CiGzXwbZHM2tWfsS3plXMFmh3v84k6fH/Hsc9A/Cnb0TJPdEWoe+kwGcPqoOzerYxkxi7F36W3sETYBWuqZ/imvLwvRYH9w6Iu8BhYh7XgzrZFrb5TC2Q6WaZ3rGMPkCX0AeW3TH2lR5NS/edpvW8Qn+kd9OROY/+9s1H5rRdYoF/aQ+c64UHNJptWSqm0o0W0nOCkMk4H3SLVyX75tdcCqytwyESZFt85UFlIMIcDwR9ujUsEg+YeC3xoUtwtwjML47dFah2m98bCOreoI48QeWbBG/neucuCkQC18+lX+28h/5rzg14s3iOJ+9t9rS39D68XfrY5yB9/thSDO4qSWk7U8Pn/mNT5+M/aarY8mu+qTCybRnt38rzS5x49MpbNl/52HH9bivAsgmtmGTqgiMg6HHXY1aY5fX6He0/0tmh/WLzwpXhzsTcWyZnbF3aoL1swZNGC1nTTXps3TOeInHGwMaQMgSAAQ7AuI09bPJWAclCLcHqUO3EIb9+371H6eX0SfrXV1cJpOv5S6D+sBgOU7LqVSiBabDt6Ocnnn+a/m06r8OrOBca+f8FUcr9zjhX5CTaGg8rAjOvBoRg2AXumDR1z5o1UyJzws/2Wr98up88/aW11/EOFB8XtTVTBDJlTXhOhJKpBYfoF0PoF1AwBAoObT50KO3TLGJLB++pySS9p3buO2pHxoLDDZ+mwWE13SeDzpxAZc6MOn1XPKTfy+gJvL+zM9+Z6T/mLsDwltnSGbHWQ6y/+TduhNfNyHbRQPTIoh//PCIKMe654JHIOroVqtahHh25Eqro1nXHhMdT77yTOpE68U7qHeFx+WN6zx/onvffh4V/EFENodekboRb6DrhGrgx8917poyMP4SnGFCFH5TJsWOo7g96Mb0ZN7h++YPfFnklL8zjWKaK386MVrD6wbK07x7X1ezI8CuZ/cmIs4vtZnOc9nBvczbv1EAQYZk9hfq43cFs1gof036udnWxweCBueOHzLphj77r20f0O8q4MQcyLpaBpP/TkKZrF3Xq8ZSH4cLv9arJBLLoO7029Z3hgId9i8x2j+3hWJhv3NnjulJSnv5M2Wp31PNHkqPebhl4xp+EM0/s4njohol/27r1b3Q/vZ3uZyGxy+LKN+bn/Z3+NXb1xNEmk6nI6cz95SU//uKiXK2kPLiJPvPIuFunjA6HyhSn0vPLn0OgK8epuWrCd9Dr3+l7JBEO5Lvlx359GGZfXaRqg7OGiby4s8vykRcX5qlbTWaTIbvYbHPlOpsacj6qcTVYJ8/GEk3NJZGs3GDbqFxwRvxh57xZYduYQDg3MCWZc15fidybtIjNdh//TwL4ZrzoyzARWxxn7y6hZFffxcpwWk3v/+yvlChLzpyFiz+Fx+THaDUcYwccP/s8HcUIiPR6apQ45+yOY8c4DqVtSen95cHaJhPPusJznmcmV3XYyuQx/Pz/AAfdhq542o2QsWrDMBCGfyVOSjOUDn4AdSlJiY1sMCTZ0hQHQqcM6RyMahsSKVj2EChd+wgd+wZ9s7xDz4pKl0IrkO7T3a+73wZwhU8wnNcNHhwzDPDiuIMLvDvu4hYnxx4G7M5xD9fsyXGf8q+kZN4l3e7tq5YZfDw77tDcN8ddPOLDsQef+Y574Cxx3Kd8gQU0DjiiQokcBWpwDJFhRDGGQIQEY+IV6SQU0RwGezR0GpvBQh+OVZkXNR9mIx6LKBnzlZaKz82+MUaSZGmV0k7JqJOit1hKJasy04p4TcWcmu6wJRHWMm92W4LUimsbK1JIayskYxwz2r81PlciTBBgSvv7M5BqVae6yiWPQ8Fn/McAXaJJMA1a8/9wu7FFQ2Vtf4mwE0IbW2fYyMqUWnEholAIwf/u+QXtVlqxAAAAeNpt0meTFVUUheH7DhkJEgQJgpIFhdvn7NM9gxKGCZKzKGZyUHJGySAgSq7i5wrFfYdPdFXX+tRP9V61Wl2tt8//rdbh1vueV29eWl2tYXQxjOGMYCSjGM0YxvIB4xjPBCbyIZOYzBSm8hHTmM7HzGAms5jNJ8xhLp/yGfOYzwIWsojFLOFzlrKML/iS5aygTUUiExRqGrrpYSVf8TWrWM0a1tLLOvroZ4BBvmE9G9jIJjazha1sYzs72MkudvMte/iO79nLD/zIT/zML/zKb+xjPwc4yCEOc4SjHOM4v/MHJzjJKU5zhrOc4zwXuMglLnOFq/zJX1zjOje4yS1uc4e73ONv7vOAh/zDI/7lPx7zhKc84zkveDnqwsljg1W7bVZmMrMZZjFrszG7zZ63mfSSXtJLekkv6SW9pJf00pBX6VV6lV6lV+lVepVepVfpVXpJL+klvaSX9JJe6njZu7J3Ze/K3pW9K3tXbg9915id/wid0Amd0Amd0Amd0Il3TueesJ+wn7CfsJ+wn7CfsJ+wn7CfsJ+wn7CfsJ+wn7CfsJ+wn0h6SS/pZb2sl/WyXtbLelkv62W9rBd6oRd6oRd6oRd6oRd6oVf0il7RK3pFr+gVvaJX9IperVfr1Xq1Xq1X69V6tV6tV+s1eo1eo9foNXqNXtPxijsr7qy4s+LOijsr7qy0h75rzG6zx+w115l9Zr85YA520l0Wd1ncZXGXxV0Wd1ncZama1x+EcTsAAAAB//8AAnjaY2BgYGQAgosrjpwF0ZcUq9bCaABTzgdAAAA=") format("woff"), + url("./Genericons.ttf") format("truetype"), + url("./Genericons.svg#Genericons") format("svg"); + font-weight: normal; + font-style: normal; +} + +@media screen and (-webkit-min-device-pixel-ratio:0) { + @font-face { + font-family: "Genericons"; + src: url("./Genericons.svg#Genericons") format("svg"); + } +} + + +/** + * All Genericons + */ + +.genericon { + font-size: 16px; + vertical-align: top; + text-align: center; + -moz-transition: color .1s ease-in 0; + -webkit-transition: color .1s ease-in 0; + display: inline-block; + font-family: "Genericons"; + font-style: normal; + font-weight: normal; + font-variant: normal; + line-height: 1; + text-decoration: inherit; + text-transform: none; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + speak: none; +} + + +/** + * Helper classes + */ + +.genericon-rotate-90 { + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); +} + +.genericon-rotate-180 { + -webkit-transform: rotate(180deg); + -moz-transform: rotate(180deg); + -ms-transform: rotate(180deg); + -o-transform: rotate(180deg); + transform: rotate(180deg); + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); +} + +.genericon-rotate-270 { + -webkit-transform: rotate(270deg); + -moz-transform: rotate(270deg); + -ms-transform: rotate(270deg); + -o-transform: rotate(270deg); + transform: rotate(270deg); + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); +} + +.genericon-flip-horizontal { + -webkit-transform: scale(-1, 1); + -moz-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + -o-transform: scale(-1, 1); + transform: scale(-1, 1); +} + +.genericon-flip-vertical { + -webkit-transform: scale(1, -1); + -moz-transform: scale(1, -1); + -ms-transform: scale(1, -1); + -o-transform: scale(1, -1); + transform: scale(1, -1); +} + + +/** + * Individual icons + */ + +.genericon-404:before { content: "\f423"; } +.genericon-activity:before { content: "\f508"; } +.genericon-anchor:before { content: "\f509"; } +.genericon-aside:before { content: "\f101"; } +.genericon-attachment:before { content: "\f416"; } +.genericon-audio:before { content: "\f109"; } +.genericon-bold:before { content: "\f471"; } +.genericon-book:before { content: "\f444"; } +.genericon-bug:before { content: "\f50a"; } +.genericon-cart:before { content: "\f447"; } +.genericon-category:before { content: "\f301"; } +.genericon-chat:before { content: "\f108"; } +.genericon-checkmark:before { content: "\f418"; } +.genericon-close:before { content: "\f405"; } +.genericon-close-alt:before { content: "\f406"; } +.genericon-cloud:before { content: "\f426"; } +.genericon-cloud-download:before { content: "\f440"; } +.genericon-cloud-upload:before { content: "\f441"; } +.genericon-code:before { content: "\f462"; } +.genericon-codepen:before { content: "\f216"; } +.genericon-cog:before { content: "\f445"; } +.genericon-collapse:before { content: "\f432"; } +.genericon-comment:before { content: "\f300"; } +.genericon-day:before { content: "\f305"; } +.genericon-digg:before { content: "\f221"; } +.genericon-document:before { content: "\f443"; } +.genericon-dot:before { content: "\f428"; } +.genericon-downarrow:before { content: "\f502"; } +.genericon-download:before { content: "\f50b"; } +.genericon-draggable:before { content: "\f436"; } +.genericon-dribbble:before { content: "\f201"; } +.genericon-dropbox:before { content: "\f225"; } +.genericon-dropdown:before { content: "\f433"; } +.genericon-dropdown-left:before { content: "\f434"; } +.genericon-edit:before { content: "\f411"; } +.genericon-ellipsis:before { content: "\f476"; } +.genericon-expand:before { content: "\f431"; } +.genericon-external:before { content: "\f442"; } +.genericon-facebook:before { content: "\f203"; } +.genericon-facebook-alt:before { content: "\f204"; } +.genericon-fastforward:before { content: "\f458"; } +.genericon-feed:before { content: "\f413"; } +.genericon-flag:before { content: "\f468"; } +.genericon-flickr:before { content: "\f211"; } +.genericon-foursquare:before { content: "\f226"; } +.genericon-fullscreen:before { content: "\f474"; } +.genericon-gallery:before { content: "\f103"; } +.genericon-github:before { content: "\f200"; } +.genericon-googleplus:before { content: "\f206"; } +.genericon-googleplus-alt:before { content: "\f218"; } +.genericon-handset:before { content: "\f50c"; } +.genericon-heart:before { content: "\f461"; } +.genericon-help:before { content: "\f457"; } +.genericon-hide:before { content: "\f404"; } +.genericon-hierarchy:before { content: "\f505"; } +.genericon-home:before { content: "\f409"; } +.genericon-image:before { content: "\f102"; } +.genericon-info:before { content: "\f455"; } +.genericon-instagram:before { content: "\f215"; } +.genericon-italic:before { content: "\f472"; } +.genericon-key:before { content: "\f427"; } +.genericon-leftarrow:before { content: "\f503"; } +.genericon-link:before { content: "\f107"; } +.genericon-linkedin:before { content: "\f207"; } +.genericon-linkedin-alt:before { content: "\f208"; } +.genericon-location:before { content: "\f417"; } +.genericon-lock:before { content: "\f470"; } +.genericon-mail:before { content: "\f410"; } +.genericon-maximize:before { content: "\f422"; } +.genericon-menu:before { content: "\f419"; } +.genericon-microphone:before { content: "\f50d"; } +.genericon-minimize:before { content: "\f421"; } +.genericon-minus:before { content: "\f50e"; } +.genericon-month:before { content: "\f307"; } +.genericon-move:before { content: "\f50f"; } +.genericon-next:before { content: "\f429"; } +.genericon-notice:before { content: "\f456"; } +.genericon-paintbrush:before { content: "\f506"; } +.genericon-path:before { content: "\f219"; } +.genericon-pause:before { content: "\f448"; } +.genericon-phone:before { content: "\f437"; } +.genericon-picture:before { content: "\f473"; } +.genericon-pinned:before { content: "\f308"; } +.genericon-pinterest:before { content: "\f209"; } +.genericon-pinterest-alt:before { content: "\f210"; } +.genericon-play:before { content: "\f452"; } +.genericon-plugin:before { content: "\f439"; } +.genericon-plus:before { content: "\f510"; } +.genericon-pocket:before { content: "\f224"; } +.genericon-polldaddy:before { content: "\f217"; } +.genericon-portfolio:before { content: "\f460"; } +.genericon-previous:before { content: "\f430"; } +.genericon-print:before { content: "\f469"; } +.genericon-quote:before { content: "\f106"; } +.genericon-rating-empty:before { content: "\f511"; } +.genericon-rating-full:before { content: "\f512"; } +.genericon-rating-half:before { content: "\f513"; } +.genericon-reddit:before { content: "\f222"; } +.genericon-refresh:before { content: "\f420"; } +.genericon-reply:before { content: "\f412"; } +.genericon-reply-alt:before { content: "\f466"; } +.genericon-reply-single:before { content: "\f467"; } +.genericon-rewind:before { content: "\f459"; } +.genericon-rightarrow:before { content: "\f501"; } +.genericon-search:before { content: "\f400"; } +.genericon-send-to-phone:before { content: "\f438"; } +.genericon-send-to-tablet:before { content: "\f454"; } +.genericon-share:before { content: "\f415"; } +.genericon-show:before { content: "\f403"; } +.genericon-shuffle:before { content: "\f514"; } +.genericon-sitemap:before { content: "\f507"; } +.genericon-skip-ahead:before { content: "\f451"; } +.genericon-skip-back:before { content: "\f450"; } +.genericon-skype:before { content: "\f220"; } +.genericon-spam:before { content: "\f424"; } +.genericon-spotify:before { content: "\f515"; } +.genericon-standard:before { content: "\f100"; } +.genericon-star:before { content: "\f408"; } +.genericon-status:before { content: "\f105"; } +.genericon-stop:before { content: "\f449"; } +.genericon-stumbleupon:before { content: "\f223"; } +.genericon-subscribe:before { content: "\f463"; } +.genericon-subscribed:before { content: "\f465"; } +.genericon-summary:before { content: "\f425"; } +.genericon-tablet:before { content: "\f453"; } +.genericon-tag:before { content: "\f302"; } +.genericon-time:before { content: "\f303"; } +.genericon-top:before { content: "\f435"; } +.genericon-trash:before { content: "\f407"; } +.genericon-tumblr:before { content: "\f214"; } +.genericon-twitch:before { content: "\f516"; } +.genericon-twitter:before { content: "\f202"; } +.genericon-unapprove:before { content: "\f446"; } +.genericon-unsubscribe:before { content: "\f464"; } +.genericon-unzoom:before { content: "\f401"; } +.genericon-uparrow:before { content: "\f500"; } +.genericon-user:before { content: "\f304"; } +.genericon-video:before { content: "\f104"; } +.genericon-videocamera:before { content: "\f517"; } +.genericon-vimeo:before { content: "\f212"; } +.genericon-warning:before { content: "\f414"; } +.genericon-website:before { content: "\f475"; } +.genericon-week:before { content: "\f306"; } +.genericon-wordpress:before { content: "\f205"; } +.genericon-xpost:before { content: "\f504"; } +.genericon-youtube:before { content: "\f213"; } +.genericon-zoom:before { content: "\f402"; } + + + + diff --git a/wp-content/themes/tortuga/assets/icons/genericons-neue.svg b/wp-content/themes/tortuga/assets/icons/genericons-neue.svg new file mode 100644 index 0000000..d6cb1e2 --- /dev/null +++ b/wp-content/themes/tortuga/assets/icons/genericons-neue.svg @@ -0,0 +1,104 @@ +activity anchor aside attachment audio-mute audio bold book bug cart category chat checkmark close-alt close cloud-download cloud-upload cloud code cog collapse comment day document download edit ellipsis expand external fastforward feed flag fullscreen gallery heart help hide hierarchy home image info italic key link location lock mail menu microphone minus month move next notice paintbrush pause phone picture pinned play plugin plus previous print quote refresh reply rewind search send-to-phone send-to-tablet share show shuffle sitemap skip-ahead skip-back spam standard star-empty star-half star status stop subscribe subscribed summary tablet tag time top trash unapprove unsubscribe unzoom user video videocamera warning website week xpost zoom \ No newline at end of file diff --git a/wp-content/themes/tortuga/assets/images/magazine-columns.png b/wp-content/themes/tortuga/assets/images/magazine-columns.png new file mode 100644 index 0000000..cb78117 Binary files /dev/null and b/wp-content/themes/tortuga/assets/images/magazine-columns.png differ diff --git a/wp-content/themes/tortuga/assets/images/magazine-grid.png b/wp-content/themes/tortuga/assets/images/magazine-grid.png new file mode 100644 index 0000000..54353a3 Binary files /dev/null and b/wp-content/themes/tortuga/assets/images/magazine-grid.png differ diff --git a/wp-content/themes/tortuga/assets/images/magazine-horizontal-box.png b/wp-content/themes/tortuga/assets/images/magazine-horizontal-box.png new file mode 100644 index 0000000..224c98a Binary files /dev/null and b/wp-content/themes/tortuga/assets/images/magazine-horizontal-box.png differ diff --git a/wp-content/themes/tortuga/assets/images/magazine-vertical-box.png b/wp-content/themes/tortuga/assets/images/magazine-vertical-box.png new file mode 100644 index 0000000..1f827d5 Binary files /dev/null and b/wp-content/themes/tortuga/assets/images/magazine-vertical-box.png differ diff --git a/wp-content/themes/tortuga/assets/js/customize-preview.js b/wp-content/themes/tortuga/assets/js/customize-preview.js new file mode 100644 index 0000000..9bcfae1 --- /dev/null +++ b/wp-content/themes/tortuga/assets/js/customize-preview.js @@ -0,0 +1,165 @@ +/** + * Customizer Live Preview + * + * Reloads changes on Theme Customizer Preview asynchronously for better usability + * + * @package Tortuga + */ + +( function( $ ) { + + // Site Title textfield. + wp.customize( 'blogname', function( value ) { + value.bind( function( to ) { + $( '.site-title a' ).text( to ); + } ); + } ); + + // Site Description textfield. + wp.customize( 'blogdescription', function( value ) { + value.bind( function( to ) { + $( '.site-description' ).text( to ); + } ); + } ); + + // Site Title checkbox. + wp.customize( 'tortuga_theme_options[site_title]', function( value ) { + value.bind( function( newval ) { + if ( false === newval ) { + hideElement( '.site-title' ); + } else { + showElement( '.site-title' ); + } + } ); + } ); + + // Site Description checkbox. + wp.customize( 'tortuga_theme_options[site_description]', function( value ) { + value.bind( function( newval ) { + if ( false === newval ) { + hideElement( '.site-description' ); + } else { + showElement( '.site-description' ); + } + } ); + } ); + + // Sidebar Position. + wp.customize( 'tortuga_theme_options[layout]', function( value ) { + value.bind( function( newval ) { + if ( 'left-sidebar' === newval && false === $( 'body' ).hasClass( 'no-sidebar' ) ) { + $( 'body' ).addClass( 'sidebar-left' ); + } else { + $( 'body' ).removeClass( 'sidebar-left' ); + } + } ); + } ); + + // Blog Title textfield. + wp.customize( 'tortuga_theme_options[blog_title]', function( value ) { + value.bind( function( to ) { + $( '.blog-header .blog-title' ).text( to ); + } ); + } ); + + // Blog Description textfield. + wp.customize( 'tortuga_theme_options[blog_description]', function( value ) { + value.bind( function( to ) { + $( '.blog-header .blog-description' ).text( to ); + } ); + } ); + + // Read More textfield. + wp.customize( 'tortuga_theme_options[read_more_text]', function( value ) { + value.bind( function( to ) { + $( 'a.more-link' ).text( to ); + } ); + } ); + + // Post Date checkbox. + wp.customize( 'tortuga_theme_options[meta_date]', function( value ) { + value.bind( function( newval ) { + if ( false === newval ) { + $( 'body' ).addClass( 'date-hidden' ); + } else { + $( 'body' ).removeClass( 'date-hidden' ); + } + } ); + } ); + + // Post Author checkbox. + wp.customize( 'tortuga_theme_options[meta_author]', function( value ) { + value.bind( function( newval ) { + if ( false === newval ) { + $( 'body' ).addClass( 'author-hidden' ); + } else { + $( 'body' ).removeClass( 'author-hidden' ); + } + } ); + } ); + + // Post Category checkbox. + wp.customize( 'tortuga_theme_options[meta_category]', function( value ) { + value.bind( function( newval ) { + if ( false === newval ) { + $( 'body' ).addClass( 'categories-hidden' ); + } else { + $( 'body' ).removeClass( 'categories-hidden' ); + } + } ); + } ); + + // Post Comments checkbox. + wp.customize( 'tortuga_theme_options[meta_comments]', function( value ) { + value.bind( function( newval ) { + if ( false === newval ) { + $( 'body' ).addClass( 'comments-hidden' ); + } else { + $( 'body' ).removeClass( 'comments-hidden' ); + } + } ); + } ); + + // Post Tags checkbox. + wp.customize( 'tortuga_theme_options[meta_tags]', function( value ) { + value.bind( function( newval ) { + if ( false === newval ) { + hideElement( '.type-post .entry-footer .entry-tags' ); + } else { + showElement( '.type-post .entry-footer .entry-tags' ); + } + } ); + } ); + + // Post Navigation checkbox. + wp.customize( 'tortuga_theme_options[post_navigation]', function( value ) { + value.bind( function( newval ) { + if ( false === newval ) { + hideElement( '.type-post .entry-footer .post-navigation' ); + } else { + showElement( '.type-post .entry-footer .post-navigation' ); + } + } ); + } ); + + function hideElement( element ) { + $( element ).css({ + clip: 'rect(1px, 1px, 1px, 1px)', + position: 'absolute', + width: '1px', + height: '1px', + overflow: 'hidden' + }); + } + + function showElement( element ) { + $( element ).css({ + clip: 'auto', + position: 'relative', + width: 'auto', + height: 'auto', + overflow: 'visible' + }); + } + +} )( jQuery ); diff --git a/wp-content/themes/tortuga/assets/js/customizer-controls.js b/wp-content/themes/tortuga/assets/js/customizer-controls.js new file mode 100644 index 0000000..3de959a --- /dev/null +++ b/wp-content/themes/tortuga/assets/js/customizer-controls.js @@ -0,0 +1,36 @@ +/** + * Customizer Controls JS + * + * Adds Javascript for Customizer Controls. + * + * @package Tortuga + */ + +( function( wp, $ ) { + + // Based on https://make.xwp.co/2016/07/24/dependently-contextual-customizer-controls/ + wp.customize( 'custom_logo', function( setting ) { + setting.bind( function( value ) { + if ( '' !== value ) { + // Set retina logo option to false when a new logo image is uploaded. + wp.customize.instance( 'tortuga_theme_options[retina_logo]' ).set( false ); + } + }); + + var setupControl = function( control ) { + var setActiveState, isDisplayed; + isDisplayed = function() { + return '' !== setting.get(); + }; + setActiveState = function() { + control.active.set( isDisplayed() ); + }; + setActiveState(); + setting.bind( setActiveState ); + control.active.validate = isDisplayed; + }; + wp.customize.control( 'tortuga_theme_options[retina_logo_title]', setupControl ); + wp.customize.control( 'tortuga_theme_options[retina_logo]', setupControl ); + } ); + +})( this.wp, jQuery ); diff --git a/wp-content/themes/tortuga/assets/js/customizer-magazine-widgets.js b/wp-content/themes/tortuga/assets/js/customizer-magazine-widgets.js new file mode 100644 index 0000000..ccbfc6d --- /dev/null +++ b/wp-content/themes/tortuga/assets/js/customizer-magazine-widgets.js @@ -0,0 +1,29 @@ +/** + * Magazine Widget Area Control + * + * Adds extra class if Magazine widgets are added to widget area. + * + * @package Tortuga + */ + +( function( wp, $ ) { + + if ( ! wp || ! wp.customize ) { return; } + + $( document ).ready( function() { + + $( '.customize-control-sidebar_widgets' ).find( '.add-new-widget' ).on( 'click', function() { + + // Remove Magazine Homepage sections for default sidebars. + $( 'body' ).removeClass( 'adding-magazine-widget' ); + + if ( $( this ).hasClass( 'add-new-magazine-widget' ) && $( 'body' ).hasClass( 'adding-widget' ) ) { + $( 'body' ).addClass( 'adding-magazine-widget' ); + } else { + $( 'body' ).removeClass( 'adding-magazine-widget' ); + } + } ); + + } ); + +} )( window.wp, jQuery ); diff --git a/wp-content/themes/tortuga/assets/js/html5shiv.js b/wp-content/themes/tortuga/assets/js/html5shiv.js new file mode 100644 index 0000000..45ea723 --- /dev/null +++ b/wp-content/themes/tortuga/assets/js/html5shiv.js @@ -0,0 +1,326 @@ +/** +* @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed +*/ +;(function(window, document) { +/*jshint evil:true */ + /** version */ + var version = '3.7.3'; + + /** Preset options */ + var options = window.html5 || {}; + + /** Used to skip problem elements */ + var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i; + + /** Not all elements can be cloned in IE **/ + var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i; + + /** Detect whether the browser supports default html5 styles */ + var supportsHtml5Styles; + + /** Name of the expando, to work with multiple documents or to re-shiv one document */ + var expando = '_html5shiv'; + + /** The id for the the documents expando */ + var expanID = 0; + + /** Cached data for each document */ + var expandoData = {}; + + /** Detect whether the browser supports unknown elements */ + var supportsUnknownElements; + + (function() { + try { + var a = document.createElement('a'); + a.innerHTML = ''; + //if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles + supportsHtml5Styles = ('hidden' in a); + + supportsUnknownElements = a.childNodes.length == 1 || (function() { + // assign a false positive if unable to shiv + (document.createElement)('a'); + var frag = document.createDocumentFragment(); + return ( + typeof frag.cloneNode == 'undefined' || + typeof frag.createDocumentFragment == 'undefined' || + typeof frag.createElement == 'undefined' + ); + }()); + } catch(e) { + // assign a false positive if detection fails => unable to shiv + supportsHtml5Styles = true; + supportsUnknownElements = true; + } + + }()); + + /*--------------------------------------------------------------------------*/ + + /** + * Creates a style sheet with the given CSS text and adds it to the document. + * @private + * @param {Document} ownerDocument The document. + * @param {String} cssText The CSS text. + * @returns {StyleSheet} The style element. + */ + function addStyleSheet(ownerDocument, cssText) { + var p = ownerDocument.createElement('p'), + parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement; + + p.innerHTML = 'x'; + return parent.insertBefore(p.lastChild, parent.firstChild); + } + + /** + * Returns the value of `html5.elements` as an array. + * @private + * @returns {Array} An array of shived element node names. + */ + function getElements() { + var elements = html5.elements; + return typeof elements == 'string' ? elements.split(' ') : elements; + } + + /** + * Extends the built-in list of html5 elements + * @memberOf html5 + * @param {String|Array} newElements whitespace separated list or array of new element names to shiv + * @param {Document} ownerDocument The context document. + */ + function addElements(newElements, ownerDocument) { + var elements = html5.elements; + if(typeof elements != 'string'){ + elements = elements.join(' '); + } + if(typeof newElements != 'string'){ + newElements = newElements.join(' '); + } + html5.elements = elements +' '+ newElements; + shivDocument(ownerDocument); + } + + /** + * Returns the data associated to the given document + * @private + * @param {Document} ownerDocument The document. + * @returns {Object} An object of data. + */ + function getExpandoData(ownerDocument) { + var data = expandoData[ownerDocument[expando]]; + if (!data) { + data = {}; + expanID++; + ownerDocument[expando] = expanID; + expandoData[expanID] = data; + } + return data; + } + + /** + * returns a shived element for the given nodeName and document + * @memberOf html5 + * @param {String} nodeName name of the element + * @param {Document|DocumentFragment} ownerDocument The context document. + * @returns {Object} The shived element. + */ + function createElement(nodeName, ownerDocument, data){ + if (!ownerDocument) { + ownerDocument = document; + } + if(supportsUnknownElements){ + return ownerDocument.createElement(nodeName); + } + if (!data) { + data = getExpandoData(ownerDocument); + } + var node; + + if (data.cache[nodeName]) { + node = data.cache[nodeName].cloneNode(); + } else if (saveClones.test(nodeName)) { + node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode(); + } else { + node = data.createElem(nodeName); + } + + // Avoid adding some elements to fragments in IE < 9 because + // * Attributes like `name` or `type` cannot be set/changed once an element + // is inserted into a document/fragment + // * Link elements with `src` attributes that are inaccessible, as with + // a 403 response, will cause the tab/window to crash + // * Script elements appended to fragments will execute when their `src` + // or `text` property is set + return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node; + } + + /** + * returns a shived DocumentFragment for the given document + * @memberOf html5 + * @param {Document} ownerDocument The context document. + * @returns {Object} The shived DocumentFragment. + */ + function createDocumentFragment(ownerDocument, data){ + if (!ownerDocument) { + ownerDocument = document; + } + if(supportsUnknownElements){ + return ownerDocument.createDocumentFragment(); + } + data = data || getExpandoData(ownerDocument); + var clone = data.frag.cloneNode(), + i = 0, + elems = getElements(), + l = elems.length; + for(;i",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.3",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b),"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:this,document); \ No newline at end of file diff --git a/wp-content/themes/tortuga/assets/js/jquery.flexslider-min.js b/wp-content/themes/tortuga/assets/js/jquery.flexslider-min.js new file mode 100644 index 0000000..5ad6c37 --- /dev/null +++ b/wp-content/themes/tortuga/assets/js/jquery.flexslider-min.js @@ -0,0 +1,5 @@ +/* + * jQuery FlexSlider v2.6.0 + * Copyright 2012 WooThemes + * Contributing Author: Tyler Smith + */!function($){var e=!0;$.flexslider=function(t,a){var n=$(t);n.vars=$.extend({},$.flexslider.defaults,a);var i=n.vars.namespace,s=window.navigator&&window.navigator.msPointerEnabled&&window.MSGesture,r=("ontouchstart"in window||s||window.DocumentTouch&&document instanceof DocumentTouch)&&n.vars.touch,o="click touchend MSPointerUp keyup",l="",c,d="vertical"===n.vars.direction,u=n.vars.reverse,v=n.vars.itemWidth>0,p="fade"===n.vars.animation,m=""!==n.vars.asNavFor,f={};$.data(t,"flexslider",n),f={init:function(){n.animating=!1,n.currentSlide=parseInt(n.vars.startAt?n.vars.startAt:0,10),isNaN(n.currentSlide)&&(n.currentSlide=0),n.animatingTo=n.currentSlide,n.atEnd=0===n.currentSlide||n.currentSlide===n.last,n.containerSelector=n.vars.selector.substr(0,n.vars.selector.search(" ")),n.slides=$(n.vars.selector,n),n.container=$(n.containerSelector,n),n.count=n.slides.length,n.syncExists=$(n.vars.sync).length>0,"slide"===n.vars.animation&&(n.vars.animation="swing"),n.prop=d?"top":"marginLeft",n.args={},n.manualPause=!1,n.stopped=!1,n.started=!1,n.startTimeout=null,n.transitions=!n.vars.video&&!p&&n.vars.useCSS&&function(){var e=document.createElement("div"),t=["perspectiveProperty","WebkitPerspective","MozPerspective","OPerspective","msPerspective"];for(var a in t)if(void 0!==e.style[t[a]])return n.pfx=t[a].replace("Perspective","").toLowerCase(),n.prop="-"+n.pfx+"-transform",!0;return!1}(),n.ensureAnimationEnd="",""!==n.vars.controlsContainer&&(n.controlsContainer=$(n.vars.controlsContainer).length>0&&$(n.vars.controlsContainer)),""!==n.vars.manualControls&&(n.manualControls=$(n.vars.manualControls).length>0&&$(n.vars.manualControls)),""!==n.vars.customDirectionNav&&(n.customDirectionNav=2===$(n.vars.customDirectionNav).length&&$(n.vars.customDirectionNav)),n.vars.randomize&&(n.slides.sort(function(){return Math.round(Math.random())-.5}),n.container.empty().append(n.slides)),n.doMath(),n.setup("init"),n.vars.controlNav&&f.controlNav.setup(),n.vars.directionNav&&f.directionNav.setup(),n.vars.keyboard&&(1===$(n.containerSelector).length||n.vars.multipleKeyboard)&&$(document).bind("keyup",function(e){var t=e.keyCode;if(!n.animating&&(39===t||37===t)){var a=39===t?n.getTarget("next"):37===t?n.getTarget("prev"):!1;n.flexAnimate(a,n.vars.pauseOnAction)}}),n.vars.mousewheel&&n.bind("mousewheel",function(e,t,a,i){e.preventDefault();var s=0>t?n.getTarget("next"):n.getTarget("prev");n.flexAnimate(s,n.vars.pauseOnAction)}),n.vars.pausePlay&&f.pausePlay.setup(),n.vars.slideshow&&n.vars.pauseInvisible&&f.pauseInvisible.init(),n.vars.slideshow&&(n.vars.pauseOnHover&&n.hover(function(){n.manualPlay||n.manualPause||n.pause()},function(){n.manualPause||n.manualPlay||n.stopped||n.play()}),n.vars.pauseInvisible&&f.pauseInvisible.isHidden()||(n.vars.initDelay>0?n.startTimeout=setTimeout(n.play,n.vars.initDelay):n.play())),m&&f.asNav.setup(),r&&n.vars.touch&&f.touch(),(!p||p&&n.vars.smoothHeight)&&$(window).bind("resize orientationchange focus",f.resize),n.find("img").attr("draggable","false"),setTimeout(function(){n.vars.start(n)},200)},asNav:{setup:function(){n.asNav=!0,n.animatingTo=Math.floor(n.currentSlide/n.move),n.currentItem=n.currentSlide,n.slides.removeClass(i+"active-slide").eq(n.currentItem).addClass(i+"active-slide"),s?(t._slider=n,n.slides.each(function(){var e=this;e._gesture=new MSGesture,e._gesture.target=e,e.addEventListener("MSPointerDown",function(e){e.preventDefault(),e.currentTarget._gesture&&e.currentTarget._gesture.addPointer(e.pointerId)},!1),e.addEventListener("MSGestureTap",function(e){e.preventDefault();var t=$(this),a=t.index();$(n.vars.asNavFor).data("flexslider").animating||t.hasClass("active")||(n.direction=n.currentItem=s&&t.hasClass(i+"active-slide")?n.flexAnimate(n.getTarget("prev"),!0):$(n.vars.asNavFor).data("flexslider").animating||t.hasClass(i+"active-slide")||(n.direction=n.currentItem'),n.pagingCount>1)for(var r=0;r":''+t+"","thumbnails"===n.vars.controlNav&&!0===n.vars.thumbCaptions){var c=s.attr("data-thumbcaption");""!==c&&void 0!==c&&(a+=''+c+"")}n.controlNavScaffold.append("

  • "+a+"
  • "),t++}n.controlsContainer?$(n.controlsContainer).append(n.controlNavScaffold):n.append(n.controlNavScaffold),f.controlNav.set(),f.controlNav.active(),n.controlNavScaffold.delegate("a, img",o,function(e){if(e.preventDefault(),""===l||l===e.type){var t=$(this),a=n.controlNav.index(t);t.hasClass(i+"active")||(n.direction=a>n.currentSlide?"next":"prev",n.flexAnimate(a,n.vars.pauseOnAction))}""===l&&(l=e.type),f.setToClearWatchedEvent()})},setupManual:function(){n.controlNav=n.manualControls,f.controlNav.active(),n.controlNav.bind(o,function(e){if(e.preventDefault(),""===l||l===e.type){var t=$(this),a=n.controlNav.index(t);t.hasClass(i+"active")||(a>n.currentSlide?n.direction="next":n.direction="prev",n.flexAnimate(a,n.vars.pauseOnAction))}""===l&&(l=e.type),f.setToClearWatchedEvent()})},set:function(){var e="thumbnails"===n.vars.controlNav?"img":"a";n.controlNav=$("."+i+"control-nav li "+e,n.controlsContainer?n.controlsContainer:n)},active:function(){n.controlNav.removeClass(i+"active").eq(n.animatingTo).addClass(i+"active")},update:function(e,t){n.pagingCount>1&&"add"===e?n.controlNavScaffold.append($('
  • '+n.count+"
  • ")):1===n.pagingCount?n.controlNavScaffold.find("li").remove():n.controlNav.eq(t).closest("li").remove(),f.controlNav.set(),n.pagingCount>1&&n.pagingCount!==n.controlNav.length?n.update(t,e):f.controlNav.active()}},directionNav:{setup:function(){var e=$('");n.customDirectionNav?n.directionNav=n.customDirectionNav:n.controlsContainer?($(n.controlsContainer).append(e),n.directionNav=$("."+i+"direction-nav li a",n.controlsContainer)):(n.append(e),n.directionNav=$("."+i+"direction-nav li a",n)),f.directionNav.update(),n.directionNav.bind(o,function(e){e.preventDefault();var t;(""===l||l===e.type)&&(t=$(this).hasClass(i+"next")?n.getTarget("next"):n.getTarget("prev"),n.flexAnimate(t,n.vars.pauseOnAction)),""===l&&(l=e.type),f.setToClearWatchedEvent()})},update:function(){var e=i+"disabled";1===n.pagingCount?n.directionNav.addClass(e).attr("tabindex","-1"):n.vars.animationLoop?n.directionNav.removeClass(e).removeAttr("tabindex"):0===n.animatingTo?n.directionNav.removeClass(e).filter("."+i+"prev").addClass(e).attr("tabindex","-1"):n.animatingTo===n.last?n.directionNav.removeClass(e).filter("."+i+"next").addClass(e).attr("tabindex","-1"):n.directionNav.removeClass(e).removeAttr("tabindex")}},pausePlay:{setup:function(){var e=$('
    ');n.controlsContainer?(n.controlsContainer.append(e),n.pausePlay=$("."+i+"pauseplay a",n.controlsContainer)):(n.append(e),n.pausePlay=$("."+i+"pauseplay a",n)),f.pausePlay.update(n.vars.slideshow?i+"pause":i+"play"),n.pausePlay.bind(o,function(e){e.preventDefault(),(""===l||l===e.type)&&($(this).hasClass(i+"pause")?(n.manualPause=!0,n.manualPlay=!1,n.pause()):(n.manualPause=!1,n.manualPlay=!0,n.play())),""===l&&(l=e.type),f.setToClearWatchedEvent()})},update:function(e){"play"===e?n.pausePlay.removeClass(i+"pause").addClass(i+"play").html(n.vars.playText):n.pausePlay.removeClass(i+"play").addClass(i+"pause").html(n.vars.pauseText)}},touch:function(){function e(e){e.stopPropagation(),n.animating?e.preventDefault():(n.pause(),t._gesture.addPointer(e.pointerId),T=0,c=d?n.h:n.w,f=Number(new Date),l=v&&u&&n.animatingTo===n.last?0:v&&u?n.limit-(n.itemW+n.vars.itemMargin)*n.move*n.animatingTo:v&&n.currentSlide===n.last?n.limit:v?(n.itemW+n.vars.itemMargin)*n.move*n.currentSlide:u?(n.last-n.currentSlide+n.cloneOffset)*c:(n.currentSlide+n.cloneOffset)*c)}function a(e){e.stopPropagation();var a=e.target._slider;if(a){var n=-e.translationX,i=-e.translationY;return T+=d?i:n,m=T,x=d?Math.abs(T)500)&&(e.preventDefault(),!p&&a.transitions&&(a.vars.animationLoop||(m=T/(0===a.currentSlide&&0>T||a.currentSlide===a.last&&T>0?Math.abs(T)/c+2:1)),a.setProps(l+m,"setTouch"))))}}function i(e){e.stopPropagation();var t=e.target._slider;if(t){if(t.animatingTo===t.currentSlide&&!x&&null!==m){var a=u?-m:m,n=a>0?t.getTarget("next"):t.getTarget("prev");t.canAdvance(n)&&(Number(new Date)-f<550&&Math.abs(a)>50||Math.abs(a)>c/2)?t.flexAnimate(n,t.vars.pauseOnAction):p||t.flexAnimate(t.currentSlide,t.vars.pauseOnAction,!0)}r=null,o=null,m=null,l=null,T=0}}var r,o,l,c,m,f,g,h,S,x=!1,y=0,b=0,T=0;s?(t.style.msTouchAction="none",t._gesture=new MSGesture,t._gesture.target=t,t.addEventListener("MSPointerDown",e,!1),t._slider=n,t.addEventListener("MSGestureChange",a,!1),t.addEventListener("MSGestureEnd",i,!1)):(g=function(e){n.animating?e.preventDefault():(window.navigator.msPointerEnabled||1===e.touches.length)&&(n.pause(),c=d?n.h:n.w,f=Number(new Date),y=e.touches[0].pageX,b=e.touches[0].pageY,l=v&&u&&n.animatingTo===n.last?0:v&&u?n.limit-(n.itemW+n.vars.itemMargin)*n.move*n.animatingTo:v&&n.currentSlide===n.last?n.limit:v?(n.itemW+n.vars.itemMargin)*n.move*n.currentSlide:u?(n.last-n.currentSlide+n.cloneOffset)*c:(n.currentSlide+n.cloneOffset)*c,r=d?b:y,o=d?y:b,t.addEventListener("touchmove",h,!1),t.addEventListener("touchend",S,!1))},h=function(e){y=e.touches[0].pageX,b=e.touches[0].pageY,m=d?r-b:r-y,x=d?Math.abs(m)t)&&(e.preventDefault(),!p&&n.transitions&&(n.vars.animationLoop||(m/=0===n.currentSlide&&0>m||n.currentSlide===n.last&&m>0?Math.abs(m)/c+2:1),n.setProps(l+m,"setTouch")))},S=function(e){if(t.removeEventListener("touchmove",h,!1),n.animatingTo===n.currentSlide&&!x&&null!==m){var a=u?-m:m,i=a>0?n.getTarget("next"):n.getTarget("prev");n.canAdvance(i)&&(Number(new Date)-f<550&&Math.abs(a)>50||Math.abs(a)>c/2)?n.flexAnimate(i,n.vars.pauseOnAction):p||n.flexAnimate(n.currentSlide,n.vars.pauseOnAction,!0)}t.removeEventListener("touchend",S,!1),r=null,o=null,m=null,l=null},t.addEventListener("touchstart",g,!1))},resize:function(){!n.animating&&n.is(":visible")&&(v||n.doMath(),p?f.smoothHeight():v?(n.slides.width(n.computedW),n.update(n.pagingCount),n.setProps()):d?(n.viewport.height(n.h),n.setProps(n.h,"setTotal")):(n.vars.smoothHeight&&f.smoothHeight(),n.newSlides.width(n.computedW),n.setProps(n.computedW,"setTotal")))},smoothHeight:function(e){if(!d||p){var t=p?n:n.viewport;e?t.animate({height:n.slides.eq(n.animatingTo).height()},e):t.height(n.slides.eq(n.animatingTo).height())}},sync:function(e){var t=$(n.vars.sync).data("flexslider"),a=n.animatingTo;switch(e){case"animate":t.flexAnimate(a,n.vars.pauseOnAction,!1,!0);break;case"play":t.playing||t.asNav||t.play();break;case"pause":t.pause()}},uniqueID:function(e){return e.filter("[id]").add(e.find("[id]")).each(function(){var e=$(this);e.attr("id",e.attr("id")+"_clone")}),e},pauseInvisible:{visProp:null,init:function(){var e=f.pauseInvisible.getHiddenProp();if(e){var t=e.replace(/[H|h]idden/,"")+"visibilitychange";document.addEventListener(t,function(){f.pauseInvisible.isHidden()?n.startTimeout?clearTimeout(n.startTimeout):n.pause():n.started?n.play():n.vars.initDelay>0?setTimeout(n.play,n.vars.initDelay):n.play()})}},isHidden:function(){var e=f.pauseInvisible.getHiddenProp();return e?document[e]:!1},getHiddenProp:function(){var e=["webkit","moz","ms","o"];if("hidden"in document)return"hidden";for(var t=0;tn.currentSlide?"next":"prev"),m&&1===n.pagingCount&&(n.direction=n.currentItemn.limit&&1!==n.visible?n.limit:S):h=0===n.currentSlide&&e===n.count-1&&n.vars.animationLoop&&"next"!==n.direction?u?(n.count+n.cloneOffset)*c:0:n.currentSlide===n.last&&0===e&&n.vars.animationLoop&&"prev"!==n.direction?u?0:(n.count+1)*c:u?(n.count-1-e+n.cloneOffset)*c:(e+n.cloneOffset)*c,n.setProps(h,"",n.vars.animationSpeed),n.transitions?(n.vars.animationLoop&&n.atEnd||(n.animating=!1,n.currentSlide=n.animatingTo),n.container.unbind("webkitTransitionEnd transitionend"),n.container.bind("webkitTransitionEnd transitionend",function(){clearTimeout(n.ensureAnimationEnd),n.wrapup(c)}),clearTimeout(n.ensureAnimationEnd),n.ensureAnimationEnd=setTimeout(function(){n.wrapup(c)},n.vars.animationSpeed+100)):n.container.animate(n.args,n.vars.animationSpeed,n.vars.easing,function(){n.wrapup(c)})}n.vars.smoothHeight&&f.smoothHeight(n.vars.animationSpeed)}},n.wrapup=function(e){p||v||(0===n.currentSlide&&n.animatingTo===n.last&&n.vars.animationLoop?n.setProps(e,"jumpEnd"):n.currentSlide===n.last&&0===n.animatingTo&&n.vars.animationLoop&&n.setProps(e,"jumpStart")),n.animating=!1,n.currentSlide=n.animatingTo,n.vars.after(n)},n.animateSlides=function(){!n.animating&&e&&n.flexAnimate(n.getTarget("next"))},n.pause=function(){clearInterval(n.animatedSlides),n.animatedSlides=null,n.playing=!1,n.vars.pausePlay&&f.pausePlay.update("play"),n.syncExists&&f.sync("pause")},n.play=function(){n.playing&&clearInterval(n.animatedSlides),n.animatedSlides=n.animatedSlides||setInterval(n.animateSlides,n.vars.slideshowSpeed),n.started=n.playing=!0,n.vars.pausePlay&&f.pausePlay.update("pause"),n.syncExists&&f.sync("play")},n.stop=function(){n.pause(),n.stopped=!0},n.canAdvance=function(e,t){var a=m?n.pagingCount-1:n.last;return t?!0:m&&n.currentItem===n.count-1&&0===e&&"prev"===n.direction?!0:m&&0===n.currentItem&&e===n.pagingCount-1&&"next"!==n.direction?!1:e!==n.currentSlide||m?n.vars.animationLoop?!0:n.atEnd&&0===n.currentSlide&&e===a&&"next"!==n.direction?!1:n.atEnd&&n.currentSlide===a&&0===e&&"next"===n.direction?!1:!0:!1},n.getTarget=function(e){return n.direction=e,"next"===e?n.currentSlide===n.last?0:n.currentSlide+1:0===n.currentSlide?n.last:n.currentSlide-1},n.setProps=function(e,t,a){var i=function(){var a=e?e:(n.itemW+n.vars.itemMargin)*n.move*n.animatingTo,i=function(){if(v)return"setTouch"===t?e:u&&n.animatingTo===n.last?0:u?n.limit-(n.itemW+n.vars.itemMargin)*n.move*n.animatingTo:n.animatingTo===n.last?n.limit:a;switch(t){case"setTotal":return u?(n.count-1-n.currentSlide+n.cloneOffset)*e:(n.currentSlide+n.cloneOffset)*e;case"setTouch":return u?e:e;case"jumpEnd":return u?e:n.count*e;case"jumpStart":return u?n.count*e:e;default:return e}}();return-1*i+"px"}();n.transitions&&(i=d?"translate3d(0,"+i+",0)":"translate3d("+i+",0,0)",a=void 0!==a?a/1e3+"s":"0s",n.container.css("-"+n.pfx+"-transition-duration",a),n.container.css("transition-duration",a)),n.args[n.prop]=i,(n.transitions||void 0===a)&&n.container.css(n.args),n.container.css("transform",i)},n.setup=function(e){if(p)n.slides.css({width:"100%","float":"left",marginRight:"-100%",position:"relative"}),"init"===e&&(r?n.slides.css({opacity:0,display:"block",webkitTransition:"opacity "+n.vars.animationSpeed/1e3+"s ease",zIndex:1}).eq(n.currentSlide).css({opacity:1,zIndex:2}):0==n.vars.fadeFirstSlide?n.slides.css({opacity:0,display:"block",zIndex:1}).eq(n.currentSlide).css({zIndex:2}).css({opacity:1}):n.slides.css({opacity:0,display:"block",zIndex:1}).eq(n.currentSlide).css({zIndex:2}).animate({opacity:1},n.vars.animationSpeed,n.vars.easing)),n.vars.smoothHeight&&f.smoothHeight();else{var t,a;"init"===e&&(n.viewport=$('
    ').css({overflow:"hidden",position:"relative"}).appendTo(n).append(n.container),n.cloneCount=0,n.cloneOffset=0,u&&(a=$.makeArray(n.slides).reverse(),n.slides=$(a),n.container.empty().append(n.slides))),n.vars.animationLoop&&!v&&(n.cloneCount=2,n.cloneOffset=1,"init"!==e&&n.container.find(".clone").remove(),n.container.append(f.uniqueID(n.slides.first().clone().addClass("clone")).attr("aria-hidden","true")).prepend(f.uniqueID(n.slides.last().clone().addClass("clone")).attr("aria-hidden","true"))),n.newSlides=$(n.vars.selector,n),t=u?n.count-1-n.currentSlide+n.cloneOffset:n.currentSlide+n.cloneOffset,d&&!v?(n.container.height(200*(n.count+n.cloneCount)+"%").css("position","absolute").width("100%"),setTimeout(function(){n.newSlides.css({display:"block"}),n.doMath(),n.viewport.height(n.h),n.setProps(t*n.h,"init")},"init"===e?100:0)):(n.container.width(200*(n.count+n.cloneCount)+"%"),n.setProps(t*n.computedW,"init"),setTimeout(function(){n.doMath(),n.newSlides.css({width:n.computedW,marginRight:n.computedM,"float":"left",display:"block"}),n.vars.smoothHeight&&f.smoothHeight()},"init"===e?100:0))}v||n.slides.removeClass(i+"active-slide").eq(n.currentSlide).addClass(i+"active-slide"),n.vars.init(n)},n.doMath=function(){var e=n.slides.first(),t=n.vars.itemMargin,a=n.vars.minItems,i=n.vars.maxItems;n.w=void 0===n.viewport?n.width():n.viewport.width(),n.h=e.height(),n.boxPadding=e.outerWidth()-e.width(),v?(n.itemT=n.vars.itemWidth+t,n.itemM=t,n.minW=a?a*n.itemT:n.w,n.maxW=i?i*n.itemT-t:n.w,n.itemW=n.minW>n.w?(n.w-t*(a-1))/a:n.maxWn.w?n.w:n.vars.itemWidth,n.visible=Math.floor(n.w/n.itemW),n.move=n.vars.move>0&&n.vars.moven.w?n.itemW*(n.count-1)+t*(n.count-1):(n.itemW+t)*n.count-n.w-t):(n.itemW=n.w,n.itemM=t,n.pagingCount=n.count,n.last=n.count-1),n.computedW=n.itemW-n.boxPadding,n.computedM=n.itemM},n.update=function(e,t){n.doMath(),v||(en.controlNav.length?f.controlNav.update("add"):("remove"===t&&!v||n.pagingCountn.last&&(n.currentSlide-=1,n.animatingTo-=1),f.controlNav.update("remove",n.last))),n.vars.directionNav&&f.directionNav.update()},n.addSlide=function(e,t){var a=$(e);n.count+=1,n.last=n.count-1,d&&u?void 0!==t?n.slides.eq(n.count-t).after(a):n.container.prepend(a):void 0!==t?n.slides.eq(t).before(a):n.container.append(a),n.update(t,"add"),n.slides=$(n.vars.selector+":not(.clone)",n),n.setup(),n.vars.added(n)},n.removeSlide=function(e){var t=isNaN(e)?n.slides.index($(e)):e;n.count-=1,n.last=n.count-1,isNaN(e)?$(e,n.slides).remove():d&&u?n.slides.eq(n.last).remove():n.slides.eq(e).remove(),n.doMath(),n.update(t,"remove"),n.slides=$(n.vars.selector+":not(.clone)",n),n.setup(),n.vars.removed(n)},f.init()},$(window).blur(function(t){e=!1}).focus(function(t){e=!0}),$.flexslider.defaults={namespace:"flex-",selector:".slides > li",animation:"fade",easing:"swing",direction:"horizontal",reverse:!1,animationLoop:!0,smoothHeight:!1,startAt:0,slideshow:!0,slideshowSpeed:7e3,animationSpeed:600,initDelay:0,randomize:!1,fadeFirstSlide:!0,thumbCaptions:!1,pauseOnAction:!0,pauseOnHover:!1,pauseInvisible:!0,useCSS:!0,touch:!0,video:!1,controlNav:!0,directionNav:!0,prevText:"Previous",nextText:"Next",keyboard:!0,multipleKeyboard:!1,mousewheel:!1,pausePlay:!1,pauseText:"Pause",playText:"Play",controlsContainer:"",manualControls:"",customDirectionNav:"",sync:"",asNavFor:"",itemWidth:0,itemMargin:0,minItems:1,maxItems:0,move:0,allowOneSlide:!0,start:function(){},before:function(){},after:function(){},end:function(){},added:function(){},removed:function(){},init:function(){}},$.fn.flexslider=function(e){if(void 0===e&&(e={}),"object"==typeof e)return this.each(function(){var t=$(this),a=e.selector?e.selector:".slides > li",n=t.find(a);1===n.length&&e.allowOneSlide===!0||0===n.length?(n.fadeIn(400),e.start&&e.start(t)):void 0===t.data("flexslider")&&new $.flexslider(this,e)});var t=$(this).data("flexslider");switch(e){case"play":t.play();break;case"pause":t.pause();break;case"stop":t.stop();break;case"next":t.flexAnimate(t.getTarget("next"),!0);break;case"prev":case"previous":t.flexAnimate(t.getTarget("prev"),!0);break;default:"number"==typeof e&&t.flexAnimate(e,!0)}}}(jQuery); \ No newline at end of file diff --git a/wp-content/themes/tortuga/assets/js/jquery.flexslider.js b/wp-content/themes/tortuga/assets/js/jquery.flexslider.js new file mode 100644 index 0000000..f44d18b --- /dev/null +++ b/wp-content/themes/tortuga/assets/js/jquery.flexslider.js @@ -0,0 +1,1195 @@ +/* + * jQuery FlexSlider v2.6.0 + * Copyright 2012 WooThemes + * Contributing Author: Tyler Smith + */ +; +(function ($) { + + var focused = true; + + //FlexSlider: Object Instance + $.flexslider = function(el, options) { + var slider = $(el); + + // making variables public + slider.vars = $.extend({}, $.flexslider.defaults, options); + + var namespace = slider.vars.namespace, + msGesture = window.navigator && window.navigator.msPointerEnabled && window.MSGesture, + touch = (( "ontouchstart" in window ) || msGesture || window.DocumentTouch && document instanceof DocumentTouch) && slider.vars.touch, + // depricating this idea, as devices are being released with both of these events + eventType = "click touchend MSPointerUp keyup", + watchedEvent = "", + watchedEventClearTimer, + vertical = slider.vars.direction === "vertical", + reverse = slider.vars.reverse, + carousel = (slider.vars.itemWidth > 0), + fade = slider.vars.animation === "fade", + asNav = slider.vars.asNavFor !== "", + methods = {}; + + // Store a reference to the slider object + $.data(el, "flexslider", slider); + + // Private slider methods + methods = { + init: function() { + slider.animating = false; + // Get current slide and make sure it is a number + slider.currentSlide = parseInt( ( slider.vars.startAt ? slider.vars.startAt : 0), 10 ); + if ( isNaN( slider.currentSlide ) ) { slider.currentSlide = 0; } + slider.animatingTo = slider.currentSlide; + slider.atEnd = (slider.currentSlide === 0 || slider.currentSlide === slider.last); + slider.containerSelector = slider.vars.selector.substr(0,slider.vars.selector.search(' ')); + slider.slides = $(slider.vars.selector, slider); + slider.container = $(slider.containerSelector, slider); + slider.count = slider.slides.length; + // SYNC: + slider.syncExists = $(slider.vars.sync).length > 0; + // SLIDE: + if (slider.vars.animation === "slide") { slider.vars.animation = "swing"; } + slider.prop = (vertical) ? "top" : "marginLeft"; + slider.args = {}; + // SLIDESHOW: + slider.manualPause = false; + slider.stopped = false; + //PAUSE WHEN INVISIBLE + slider.started = false; + slider.startTimeout = null; + // TOUCH/USECSS: + slider.transitions = !slider.vars.video && !fade && slider.vars.useCSS && (function() { + var obj = document.createElement('div'), + props = ['perspectiveProperty', 'WebkitPerspective', 'MozPerspective', 'OPerspective', 'msPerspective']; + for (var i in props) { + if ( obj.style[ props[i] ] !== undefined ) { + slider.pfx = props[i].replace('Perspective','').toLowerCase(); + slider.prop = "-" + slider.pfx + "-transform"; + return true; + } + } + return false; + }()); + slider.ensureAnimationEnd = ''; + // CONTROLSCONTAINER: + if (slider.vars.controlsContainer !== "") slider.controlsContainer = $(slider.vars.controlsContainer).length > 0 && $(slider.vars.controlsContainer); + // MANUAL: + if (slider.vars.manualControls !== "") slider.manualControls = $(slider.vars.manualControls).length > 0 && $(slider.vars.manualControls); + + // CUSTOM DIRECTION NAV: + if (slider.vars.customDirectionNav !== "") slider.customDirectionNav = $(slider.vars.customDirectionNav).length === 2 && $(slider.vars.customDirectionNav); + + // RANDOMIZE: + if (slider.vars.randomize) { + slider.slides.sort(function() { return (Math.round(Math.random())-0.5); }); + slider.container.empty().append(slider.slides); + } + + slider.doMath(); + + // INIT + slider.setup("init"); + + // CONTROLNAV: + if (slider.vars.controlNav) { methods.controlNav.setup(); } + + // DIRECTIONNAV: + if (slider.vars.directionNav) { methods.directionNav.setup(); } + + // KEYBOARD: + if (slider.vars.keyboard && ($(slider.containerSelector).length === 1 || slider.vars.multipleKeyboard)) { + $(document).bind('keyup', function(event) { + var keycode = event.keyCode; + if (!slider.animating && (keycode === 39 || keycode === 37)) { + var target = (keycode === 39) ? slider.getTarget('next') : + (keycode === 37) ? slider.getTarget('prev') : false; + slider.flexAnimate(target, slider.vars.pauseOnAction); + } + }); + } + // MOUSEWHEEL: + if (slider.vars.mousewheel) { + slider.bind('mousewheel', function(event, delta, deltaX, deltaY) { + event.preventDefault(); + var target = (delta < 0) ? slider.getTarget('next') : slider.getTarget('prev'); + slider.flexAnimate(target, slider.vars.pauseOnAction); + }); + } + + // PAUSEPLAY + if (slider.vars.pausePlay) { methods.pausePlay.setup(); } + + //PAUSE WHEN INVISIBLE + if (slider.vars.slideshow && slider.vars.pauseInvisible) { methods.pauseInvisible.init(); } + + // SLIDSESHOW + if (slider.vars.slideshow) { + if (slider.vars.pauseOnHover) { + slider.hover(function() { + if (!slider.manualPlay && !slider.manualPause) { slider.pause(); } + }, function() { + if (!slider.manualPause && !slider.manualPlay && !slider.stopped) { slider.play(); } + }); + } + // initialize animation + //If we're visible, or we don't use PageVisibility API + if(!slider.vars.pauseInvisible || !methods.pauseInvisible.isHidden()) { + (slider.vars.initDelay > 0) ? slider.startTimeout = setTimeout(slider.play, slider.vars.initDelay) : slider.play(); + } + } + + // ASNAV: + if (asNav) { methods.asNav.setup(); } + + // TOUCH + if (touch && slider.vars.touch) { methods.touch(); } + + // FADE&&SMOOTHHEIGHT || SLIDE: + if (!fade || (fade && slider.vars.smoothHeight)) { $(window).bind("resize orientationchange focus", methods.resize); } + + slider.find("img").attr("draggable", "false"); + + // API: start() Callback + setTimeout(function(){ + slider.vars.start(slider); + }, 200); + }, + asNav: { + setup: function() { + slider.asNav = true; + slider.animatingTo = Math.floor(slider.currentSlide/slider.move); + slider.currentItem = slider.currentSlide; + slider.slides.removeClass(namespace + "active-slide").eq(slider.currentItem).addClass(namespace + "active-slide"); + if(!msGesture){ + slider.slides.on(eventType, function(e){ + e.preventDefault(); + var $slide = $(this), + target = $slide.index(); + var posFromLeft = $slide.offset().left - $(slider).scrollLeft(); // Find position of slide relative to left of slider container + if( posFromLeft <= 0 && $slide.hasClass( namespace + 'active-slide' ) ) { + slider.flexAnimate(slider.getTarget("prev"), true); + } else if (!$(slider.vars.asNavFor).data('flexslider').animating && !$slide.hasClass(namespace + "active-slide")) { + slider.direction = (slider.currentItem < target) ? "next" : "prev"; + slider.flexAnimate(target, slider.vars.pauseOnAction, false, true, true); + } + }); + }else{ + el._slider = slider; + slider.slides.each(function (){ + var that = this; + that._gesture = new MSGesture(); + that._gesture.target = that; + that.addEventListener("MSPointerDown", function (e){ + e.preventDefault(); + if(e.currentTarget._gesture) { + e.currentTarget._gesture.addPointer(e.pointerId); + } + }, false); + that.addEventListener("MSGestureTap", function (e){ + e.preventDefault(); + var $slide = $(this), + target = $slide.index(); + if (!$(slider.vars.asNavFor).data('flexslider').animating && !$slide.hasClass('active')) { + slider.direction = (slider.currentItem < target) ? "next" : "prev"; + slider.flexAnimate(target, slider.vars.pauseOnAction, false, true, true); + } + }); + }); + } + } + }, + controlNav: { + setup: function() { + if (!slider.manualControls) { + methods.controlNav.setupPaging(); + } else { // MANUALCONTROLS: + methods.controlNav.setupManual(); + } + }, + setupPaging: function() { + var type = (slider.vars.controlNav === "thumbnails") ? 'control-thumbs' : 'control-paging', + j = 1, + item, + slide; + + slider.controlNavScaffold = $('
      '); + + if (slider.pagingCount > 1) { + for (var i = 0; i < slider.pagingCount; i++) { + slide = slider.slides.eq(i); + if ( undefined === slide.attr( 'data-thumb-alt' ) ) { slide.attr( 'data-thumb-alt', '' ); } + altText = ( '' !== slide.attr( 'data-thumb-alt' ) ) ? altText = ' alt="' + slide.attr( 'data-thumb-alt' ) + '"' : ''; + item = (slider.vars.controlNav === "thumbnails") ? '' : '' + j + ''; + if ( 'thumbnails' === slider.vars.controlNav && true === slider.vars.thumbCaptions ) { + var captn = slide.attr( 'data-thumbcaption' ); + if ( '' !== captn && undefined !== captn ) { item += '' + captn + ''; } + } + slider.controlNavScaffold.append('
    1. ' + item + '
    2. '); + j++; + } + } + + // CONTROLSCONTAINER: + (slider.controlsContainer) ? $(slider.controlsContainer).append(slider.controlNavScaffold) : slider.append(slider.controlNavScaffold); + methods.controlNav.set(); + + methods.controlNav.active(); + + slider.controlNavScaffold.delegate('a, img', eventType, function(event) { + event.preventDefault(); + + if (watchedEvent === "" || watchedEvent === event.type) { + var $this = $(this), + target = slider.controlNav.index($this); + + if (!$this.hasClass(namespace + 'active')) { + slider.direction = (target > slider.currentSlide) ? "next" : "prev"; + slider.flexAnimate(target, slider.vars.pauseOnAction); + } + } + + // setup flags to prevent event duplication + if (watchedEvent === "") { + watchedEvent = event.type; + } + methods.setToClearWatchedEvent(); + + }); + }, + setupManual: function() { + slider.controlNav = slider.manualControls; + methods.controlNav.active(); + + slider.controlNav.bind(eventType, function(event) { + event.preventDefault(); + + if (watchedEvent === "" || watchedEvent === event.type) { + var $this = $(this), + target = slider.controlNav.index($this); + + if (!$this.hasClass(namespace + 'active')) { + (target > slider.currentSlide) ? slider.direction = "next" : slider.direction = "prev"; + slider.flexAnimate(target, slider.vars.pauseOnAction); + } + } + + // setup flags to prevent event duplication + if (watchedEvent === "") { + watchedEvent = event.type; + } + methods.setToClearWatchedEvent(); + }); + }, + set: function() { + var selector = (slider.vars.controlNav === "thumbnails") ? 'img' : 'a'; + slider.controlNav = $('.' + namespace + 'control-nav li ' + selector, (slider.controlsContainer) ? slider.controlsContainer : slider); + }, + active: function() { + slider.controlNav.removeClass(namespace + "active").eq(slider.animatingTo).addClass(namespace + "active"); + }, + update: function(action, pos) { + if (slider.pagingCount > 1 && action === "add") { + slider.controlNavScaffold.append($('
    3. ' + slider.count + '
    4. ')); + } else if (slider.pagingCount === 1) { + slider.controlNavScaffold.find('li').remove(); + } else { + slider.controlNav.eq(pos).closest('li').remove(); + } + methods.controlNav.set(); + (slider.pagingCount > 1 && slider.pagingCount !== slider.controlNav.length) ? slider.update(pos, action) : methods.controlNav.active(); + } + }, + directionNav: { + setup: function() { + var directionNavScaffold = $(''); + + // CUSTOM DIRECTION NAV: + if (slider.customDirectionNav) { + slider.directionNav = slider.customDirectionNav; + // CONTROLSCONTAINER: + } else if (slider.controlsContainer) { + $(slider.controlsContainer).append(directionNavScaffold); + slider.directionNav = $('.' + namespace + 'direction-nav li a', slider.controlsContainer); + } else { + slider.append(directionNavScaffold); + slider.directionNav = $('.' + namespace + 'direction-nav li a', slider); + } + + methods.directionNav.update(); + + slider.directionNav.bind(eventType, function(event) { + event.preventDefault(); + var target; + + if (watchedEvent === "" || watchedEvent === event.type) { + target = ($(this).hasClass(namespace + 'next')) ? slider.getTarget('next') : slider.getTarget('prev'); + slider.flexAnimate(target, slider.vars.pauseOnAction); + } + + // setup flags to prevent event duplication + if (watchedEvent === "") { + watchedEvent = event.type; + } + methods.setToClearWatchedEvent(); + }); + }, + update: function() { + var disabledClass = namespace + 'disabled'; + if (slider.pagingCount === 1) { + slider.directionNav.addClass(disabledClass).attr('tabindex', '-1'); + } else if (!slider.vars.animationLoop) { + if (slider.animatingTo === 0) { + slider.directionNav.removeClass(disabledClass).filter('.' + namespace + "prev").addClass(disabledClass).attr('tabindex', '-1'); + } else if (slider.animatingTo === slider.last) { + slider.directionNav.removeClass(disabledClass).filter('.' + namespace + "next").addClass(disabledClass).attr('tabindex', '-1'); + } else { + slider.directionNav.removeClass(disabledClass).removeAttr('tabindex'); + } + } else { + slider.directionNav.removeClass(disabledClass).removeAttr('tabindex'); + } + } + }, + pausePlay: { + setup: function() { + var pausePlayScaffold = $('
      '); + + // CONTROLSCONTAINER: + if (slider.controlsContainer) { + slider.controlsContainer.append(pausePlayScaffold); + slider.pausePlay = $('.' + namespace + 'pauseplay a', slider.controlsContainer); + } else { + slider.append(pausePlayScaffold); + slider.pausePlay = $('.' + namespace + 'pauseplay a', slider); + } + + methods.pausePlay.update((slider.vars.slideshow) ? namespace + 'pause' : namespace + 'play'); + + slider.pausePlay.bind(eventType, function(event) { + event.preventDefault(); + + if (watchedEvent === "" || watchedEvent === event.type) { + if ($(this).hasClass(namespace + 'pause')) { + slider.manualPause = true; + slider.manualPlay = false; + slider.pause(); + } else { + slider.manualPause = false; + slider.manualPlay = true; + slider.play(); + } + } + + // setup flags to prevent event duplication + if (watchedEvent === "") { + watchedEvent = event.type; + } + methods.setToClearWatchedEvent(); + }); + }, + update: function(state) { + (state === "play") ? slider.pausePlay.removeClass(namespace + 'pause').addClass(namespace + 'play').html(slider.vars.playText) : slider.pausePlay.removeClass(namespace + 'play').addClass(namespace + 'pause').html(slider.vars.pauseText); + } + }, + touch: function() { + var startX, + startY, + offset, + cwidth, + dx, + startT, + onTouchStart, + onTouchMove, + onTouchEnd, + scrolling = false, + localX = 0, + localY = 0, + accDx = 0; + + if(!msGesture){ + onTouchStart = function(e) { + if (slider.animating) { + e.preventDefault(); + } else if ( ( window.navigator.msPointerEnabled ) || e.touches.length === 1 ) { + slider.pause(); + // CAROUSEL: + cwidth = (vertical) ? slider.h : slider. w; + startT = Number(new Date()); + // CAROUSEL: + + // Local vars for X and Y points. + localX = e.touches[0].pageX; + localY = e.touches[0].pageY; + + offset = (carousel && reverse && slider.animatingTo === slider.last) ? 0 : + (carousel && reverse) ? slider.limit - (((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.animatingTo) : + (carousel && slider.currentSlide === slider.last) ? slider.limit : + (carousel) ? ((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.currentSlide : + (reverse) ? (slider.last - slider.currentSlide + slider.cloneOffset) * cwidth : (slider.currentSlide + slider.cloneOffset) * cwidth; + startX = (vertical) ? localY : localX; + startY = (vertical) ? localX : localY; + + el.addEventListener('touchmove', onTouchMove, false); + el.addEventListener('touchend', onTouchEnd, false); + } + }; + + onTouchMove = function(e) { + // Local vars for X and Y points. + + localX = e.touches[0].pageX; + localY = e.touches[0].pageY; + + dx = (vertical) ? startX - localY : startX - localX; + scrolling = (vertical) ? (Math.abs(dx) < Math.abs(localX - startY)) : (Math.abs(dx) < Math.abs(localY - startY)); + + var fxms = 500; + + if ( ! scrolling || Number( new Date() ) - startT > fxms ) { + e.preventDefault(); + if (!fade && slider.transitions) { + if (!slider.vars.animationLoop) { + dx = dx/((slider.currentSlide === 0 && dx < 0 || slider.currentSlide === slider.last && dx > 0) ? (Math.abs(dx)/cwidth+2) : 1); + } + slider.setProps(offset + dx, "setTouch"); + } + } + }; + + onTouchEnd = function(e) { + // finish the touch by undoing the touch session + el.removeEventListener('touchmove', onTouchMove, false); + + if (slider.animatingTo === slider.currentSlide && !scrolling && !(dx === null)) { + var updateDx = (reverse) ? -dx : dx, + target = (updateDx > 0) ? slider.getTarget('next') : slider.getTarget('prev'); + + if (slider.canAdvance(target) && (Number(new Date()) - startT < 550 && Math.abs(updateDx) > 50 || Math.abs(updateDx) > cwidth/2)) { + slider.flexAnimate(target, slider.vars.pauseOnAction); + } else { + if (!fade) { slider.flexAnimate(slider.currentSlide, slider.vars.pauseOnAction, true); } + } + } + el.removeEventListener('touchend', onTouchEnd, false); + + startX = null; + startY = null; + dx = null; + offset = null; + }; + + el.addEventListener('touchstart', onTouchStart, false); + }else{ + el.style.msTouchAction = "none"; + el._gesture = new MSGesture(); + el._gesture.target = el; + el.addEventListener("MSPointerDown", onMSPointerDown, false); + el._slider = slider; + el.addEventListener("MSGestureChange", onMSGestureChange, false); + el.addEventListener("MSGestureEnd", onMSGestureEnd, false); + + function onMSPointerDown(e){ + e.stopPropagation(); + if (slider.animating) { + e.preventDefault(); + }else{ + slider.pause(); + el._gesture.addPointer(e.pointerId); + accDx = 0; + cwidth = (vertical) ? slider.h : slider. w; + startT = Number(new Date()); + // CAROUSEL: + + offset = (carousel && reverse && slider.animatingTo === slider.last) ? 0 : + (carousel && reverse) ? slider.limit - (((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.animatingTo) : + (carousel && slider.currentSlide === slider.last) ? slider.limit : + (carousel) ? ((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.currentSlide : + (reverse) ? (slider.last - slider.currentSlide + slider.cloneOffset) * cwidth : (slider.currentSlide + slider.cloneOffset) * cwidth; + } + } + + function onMSGestureChange(e) { + e.stopPropagation(); + var slider = e.target._slider; + if(!slider){ + return; + } + var transX = -e.translationX, + transY = -e.translationY; + + //Accumulate translations. + accDx = accDx + ((vertical) ? transY : transX); + dx = accDx; + scrolling = (vertical) ? (Math.abs(accDx) < Math.abs(-transX)) : (Math.abs(accDx) < Math.abs(-transY)); + + if(e.detail === e.MSGESTURE_FLAG_INERTIA){ + setImmediate(function (){ + el._gesture.stop(); + }); + + return; + } + + if (!scrolling || Number(new Date()) - startT > 500) { + e.preventDefault(); + if (!fade && slider.transitions) { + if (!slider.vars.animationLoop) { + dx = accDx / ((slider.currentSlide === 0 && accDx < 0 || slider.currentSlide === slider.last && accDx > 0) ? (Math.abs(accDx) / cwidth + 2) : 1); + } + slider.setProps(offset + dx, "setTouch"); + } + } + } + + function onMSGestureEnd(e) { + e.stopPropagation(); + var slider = e.target._slider; + if(!slider){ + return; + } + if (slider.animatingTo === slider.currentSlide && !scrolling && !(dx === null)) { + var updateDx = (reverse) ? -dx : dx, + target = (updateDx > 0) ? slider.getTarget('next') : slider.getTarget('prev'); + + if (slider.canAdvance(target) && (Number(new Date()) - startT < 550 && Math.abs(updateDx) > 50 || Math.abs(updateDx) > cwidth/2)) { + slider.flexAnimate(target, slider.vars.pauseOnAction); + } else { + if (!fade) { slider.flexAnimate(slider.currentSlide, slider.vars.pauseOnAction, true); } + } + } + + startX = null; + startY = null; + dx = null; + offset = null; + accDx = 0; + } + } + }, + resize: function() { + if (!slider.animating && slider.is(':visible')) { + if (!carousel) { slider.doMath(); } + + if (fade) { + // SMOOTH HEIGHT: + methods.smoothHeight(); + } else if (carousel) { //CAROUSEL: + slider.slides.width(slider.computedW); + slider.update(slider.pagingCount); + slider.setProps(); + } + else if (vertical) { //VERTICAL: + slider.viewport.height(slider.h); + slider.setProps(slider.h, "setTotal"); + } else { + // SMOOTH HEIGHT: + if (slider.vars.smoothHeight) { methods.smoothHeight(); } + slider.newSlides.width(slider.computedW); + slider.setProps(slider.computedW, "setTotal"); + } + } + }, + smoothHeight: function(dur) { + if (!vertical || fade) { + var $obj = (fade) ? slider : slider.viewport; + (dur) ? $obj.animate({"height": slider.slides.eq(slider.animatingTo).height()}, dur) : $obj.height(slider.slides.eq(slider.animatingTo).height()); + } + }, + sync: function(action) { + var $obj = $(slider.vars.sync).data("flexslider"), + target = slider.animatingTo; + + switch (action) { + case "animate": $obj.flexAnimate(target, slider.vars.pauseOnAction, false, true); break; + case "play": if (!$obj.playing && !$obj.asNav) { $obj.play(); } break; + case "pause": $obj.pause(); break; + } + }, + uniqueID: function($clone) { + // Append _clone to current level and children elements with id attributes + $clone.filter( '[id]' ).add($clone.find( '[id]' )).each(function() { + var $this = $(this); + $this.attr( 'id', $this.attr( 'id' ) + '_clone' ); + }); + return $clone; + }, + pauseInvisible: { + visProp: null, + init: function() { + var visProp = methods.pauseInvisible.getHiddenProp(); + if (visProp) { + var evtname = visProp.replace(/[H|h]idden/,'') + 'visibilitychange'; + document.addEventListener(evtname, function() { + if (methods.pauseInvisible.isHidden()) { + if(slider.startTimeout) { + clearTimeout(slider.startTimeout); //If clock is ticking, stop timer and prevent from starting while invisible + } else { + slider.pause(); //Or just pause + } + } + else { + if(slider.started) { + slider.play(); //Initiated before, just play + } else { + if (slider.vars.initDelay > 0) { + setTimeout(slider.play, slider.vars.initDelay); + } else { + slider.play(); //Didn't init before: simply init or wait for it + } + } + } + }); + } + }, + isHidden: function() { + var prop = methods.pauseInvisible.getHiddenProp(); + if (!prop) { + return false; + } + return document[prop]; + }, + getHiddenProp: function() { + var prefixes = ['webkit','moz','ms','o']; + // if 'hidden' is natively supported just return it + if ('hidden' in document) { + return 'hidden'; + } + // otherwise loop over all the known prefixes until we find one + for ( var i = 0; i < prefixes.length; i++ ) { + if ((prefixes[i] + 'Hidden') in document) { + return prefixes[i] + 'Hidden'; + } + } + // otherwise it's not supported + return null; + } + }, + setToClearWatchedEvent: function() { + clearTimeout(watchedEventClearTimer); + watchedEventClearTimer = setTimeout(function() { + watchedEvent = ""; + }, 3000); + } + }; + + // public methods + slider.flexAnimate = function(target, pause, override, withSync, fromNav) { + if (!slider.vars.animationLoop && target !== slider.currentSlide) { + slider.direction = (target > slider.currentSlide) ? "next" : "prev"; + } + + if (asNav && slider.pagingCount === 1) slider.direction = (slider.currentItem < target) ? "next" : "prev"; + + if (!slider.animating && (slider.canAdvance(target, fromNav) || override) && slider.is(":visible")) { + if (asNav && withSync) { + var master = $(slider.vars.asNavFor).data('flexslider'); + slider.atEnd = target === 0 || target === slider.count - 1; + master.flexAnimate(target, true, false, true, fromNav); + slider.direction = (slider.currentItem < target) ? "next" : "prev"; + master.direction = slider.direction; + + if (Math.ceil((target + 1)/slider.visible) - 1 !== slider.currentSlide && target !== 0) { + slider.currentItem = target; + slider.slides.removeClass(namespace + "active-slide").eq(target).addClass(namespace + "active-slide"); + target = Math.floor(target/slider.visible); + } else { + slider.currentItem = target; + slider.slides.removeClass(namespace + "active-slide").eq(target).addClass(namespace + "active-slide"); + return false; + } + } + + slider.animating = true; + slider.animatingTo = target; + + // SLIDESHOW: + if (pause) { slider.pause(); } + + // API: before() animation Callback + slider.vars.before(slider); + + // SYNC: + if (slider.syncExists && !fromNav) { methods.sync("animate"); } + + // CONTROLNAV + if (slider.vars.controlNav) { methods.controlNav.active(); } + + // !CAROUSEL: + // CANDIDATE: slide active class (for add/remove slide) + if (!carousel) { slider.slides.removeClass(namespace + 'active-slide').eq(target).addClass(namespace + 'active-slide'); } + + // INFINITE LOOP: + // CANDIDATE: atEnd + slider.atEnd = target === 0 || target === slider.last; + + // DIRECTIONNAV: + if (slider.vars.directionNav) { methods.directionNav.update(); } + + if (target === slider.last) { + // API: end() of cycle Callback + slider.vars.end(slider); + // SLIDESHOW && !INFINITE LOOP: + if (!slider.vars.animationLoop) { slider.pause(); } + } + + // SLIDE: + if (!fade) { + var dimension = (vertical) ? slider.slides.filter(':first').height() : slider.computedW, + margin, slideString, calcNext; + + // INFINITE LOOP / REVERSE: + if (carousel) { + margin = slider.vars.itemMargin; + calcNext = ((slider.itemW + margin) * slider.move) * slider.animatingTo; + slideString = (calcNext > slider.limit && slider.visible !== 1) ? slider.limit : calcNext; + } else if (slider.currentSlide === 0 && target === slider.count - 1 && slider.vars.animationLoop && slider.direction !== "next") { + slideString = (reverse) ? (slider.count + slider.cloneOffset) * dimension : 0; + } else if (slider.currentSlide === slider.last && target === 0 && slider.vars.animationLoop && slider.direction !== "prev") { + slideString = (reverse) ? 0 : (slider.count + 1) * dimension; + } else { + slideString = (reverse) ? ((slider.count - 1) - target + slider.cloneOffset) * dimension : (target + slider.cloneOffset) * dimension; + } + slider.setProps(slideString, "", slider.vars.animationSpeed); + if (slider.transitions) { + if (!slider.vars.animationLoop || !slider.atEnd) { + slider.animating = false; + slider.currentSlide = slider.animatingTo; + } + + // Unbind previous transitionEnd events and re-bind new transitionEnd event + slider.container.unbind("webkitTransitionEnd transitionend"); + slider.container.bind("webkitTransitionEnd transitionend", function() { + clearTimeout(slider.ensureAnimationEnd); + slider.wrapup(dimension); + }); + + // Insurance for the ever-so-fickle transitionEnd event + clearTimeout(slider.ensureAnimationEnd); + slider.ensureAnimationEnd = setTimeout(function() { + slider.wrapup(dimension); + }, slider.vars.animationSpeed + 100); + + } else { + slider.container.animate(slider.args, slider.vars.animationSpeed, slider.vars.easing, function(){ + slider.wrapup(dimension); + }); + } + } else { // FADE: + if (!touch) { + //slider.slides.eq(slider.currentSlide).fadeOut(slider.vars.animationSpeed, slider.vars.easing); + //slider.slides.eq(target).fadeIn(slider.vars.animationSpeed, slider.vars.easing, slider.wrapup); + + slider.slides.eq(slider.currentSlide).css({"zIndex": 1}).animate({"opacity": 0}, slider.vars.animationSpeed, slider.vars.easing); + slider.slides.eq(target).css({"zIndex": 2}).animate({"opacity": 1}, slider.vars.animationSpeed, slider.vars.easing, slider.wrapup); + + } else { + slider.slides.eq(slider.currentSlide).css({ "opacity": 0, "zIndex": 1 }); + slider.slides.eq(target).css({ "opacity": 1, "zIndex": 2 }); + slider.wrapup(dimension); + } + } + // SMOOTH HEIGHT: + if (slider.vars.smoothHeight) { methods.smoothHeight(slider.vars.animationSpeed); } + } + }; + slider.wrapup = function(dimension) { + // SLIDE: + if (!fade && !carousel) { + if (slider.currentSlide === 0 && slider.animatingTo === slider.last && slider.vars.animationLoop) { + slider.setProps(dimension, "jumpEnd"); + } else if (slider.currentSlide === slider.last && slider.animatingTo === 0 && slider.vars.animationLoop) { + slider.setProps(dimension, "jumpStart"); + } + } + slider.animating = false; + slider.currentSlide = slider.animatingTo; + // API: after() animation Callback + slider.vars.after(slider); + }; + + // SLIDESHOW: + slider.animateSlides = function() { + if (!slider.animating && focused ) { slider.flexAnimate(slider.getTarget("next")); } + }; + // SLIDESHOW: + slider.pause = function() { + clearInterval(slider.animatedSlides); + slider.animatedSlides = null; + slider.playing = false; + // PAUSEPLAY: + if (slider.vars.pausePlay) { methods.pausePlay.update("play"); } + // SYNC: + if (slider.syncExists) { methods.sync("pause"); } + }; + // SLIDESHOW: + slider.play = function() { + if (slider.playing) { clearInterval(slider.animatedSlides); } + slider.animatedSlides = slider.animatedSlides || setInterval(slider.animateSlides, slider.vars.slideshowSpeed); + slider.started = slider.playing = true; + // PAUSEPLAY: + if (slider.vars.pausePlay) { methods.pausePlay.update("pause"); } + // SYNC: + if (slider.syncExists) { methods.sync("play"); } + }; + // STOP: + slider.stop = function () { + slider.pause(); + slider.stopped = true; + }; + slider.canAdvance = function(target, fromNav) { + // ASNAV: + var last = (asNav) ? slider.pagingCount - 1 : slider.last; + return (fromNav) ? true : + (asNav && slider.currentItem === slider.count - 1 && target === 0 && slider.direction === "prev") ? true : + (asNav && slider.currentItem === 0 && target === slider.pagingCount - 1 && slider.direction !== "next") ? false : + (target === slider.currentSlide && !asNav) ? false : + (slider.vars.animationLoop) ? true : + (slider.atEnd && slider.currentSlide === 0 && target === last && slider.direction !== "next") ? false : + (slider.atEnd && slider.currentSlide === last && target === 0 && slider.direction === "next") ? false : + true; + }; + slider.getTarget = function(dir) { + slider.direction = dir; + if (dir === "next") { + return (slider.currentSlide === slider.last) ? 0 : slider.currentSlide + 1; + } else { + return (slider.currentSlide === 0) ? slider.last : slider.currentSlide - 1; + } + }; + + // SLIDE: + slider.setProps = function(pos, special, dur) { + var target = (function() { + var posCheck = (pos) ? pos : ((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.animatingTo, + posCalc = (function() { + if (carousel) { + return (special === "setTouch") ? pos : + (reverse && slider.animatingTo === slider.last) ? 0 : + (reverse) ? slider.limit - (((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.animatingTo) : + (slider.animatingTo === slider.last) ? slider.limit : posCheck; + } else { + switch (special) { + case "setTotal": return (reverse) ? ((slider.count - 1) - slider.currentSlide + slider.cloneOffset) * pos : (slider.currentSlide + slider.cloneOffset) * pos; + case "setTouch": return (reverse) ? pos : pos; + case "jumpEnd": return (reverse) ? pos : slider.count * pos; + case "jumpStart": return (reverse) ? slider.count * pos : pos; + default: return pos; + } + } + }()); + + return (posCalc * -1) + "px"; + }()); + + if (slider.transitions) { + target = (vertical) ? "translate3d(0," + target + ",0)" : "translate3d(" + target + ",0,0)"; + dur = (dur !== undefined) ? (dur/1000) + "s" : "0s"; + slider.container.css("-" + slider.pfx + "-transition-duration", dur); + slider.container.css("transition-duration", dur); + } + + slider.args[slider.prop] = target; + if (slider.transitions || dur === undefined) { slider.container.css(slider.args); } + + slider.container.css('transform',target); + }; + + slider.setup = function(type) { + // SLIDE: + if (!fade) { + var sliderOffset, arr; + + if (type === "init") { + slider.viewport = $('
      ').css({"overflow": "hidden", "position": "relative"}).appendTo(slider).append(slider.container); + // INFINITE LOOP: + slider.cloneCount = 0; + slider.cloneOffset = 0; + // REVERSE: + if (reverse) { + arr = $.makeArray(slider.slides).reverse(); + slider.slides = $(arr); + slider.container.empty().append(slider.slides); + } + } + // INFINITE LOOP && !CAROUSEL: + if (slider.vars.animationLoop && !carousel) { + slider.cloneCount = 2; + slider.cloneOffset = 1; + // clear out old clones + if (type !== "init") { slider.container.find('.clone').remove(); } + slider.container.append(methods.uniqueID(slider.slides.first().clone().addClass('clone')).attr('aria-hidden', 'true')) + .prepend(methods.uniqueID(slider.slides.last().clone().addClass('clone')).attr('aria-hidden', 'true')); + } + slider.newSlides = $(slider.vars.selector, slider); + + sliderOffset = (reverse) ? slider.count - 1 - slider.currentSlide + slider.cloneOffset : slider.currentSlide + slider.cloneOffset; + // VERTICAL: + if (vertical && !carousel) { + slider.container.height((slider.count + slider.cloneCount) * 200 + "%").css("position", "absolute").width("100%"); + setTimeout(function(){ + slider.newSlides.css({"display": "block"}); + slider.doMath(); + slider.viewport.height(slider.h); + slider.setProps(sliderOffset * slider.h, "init"); + }, (type === "init") ? 100 : 0); + } else { + slider.container.width((slider.count + slider.cloneCount) * 200 + "%"); + slider.setProps(sliderOffset * slider.computedW, "init"); + setTimeout(function(){ + slider.doMath(); + slider.newSlides.css({"width": slider.computedW, "marginRight" : slider.computedM, "float": "left", "display": "block"}); + // SMOOTH HEIGHT: + if (slider.vars.smoothHeight) { methods.smoothHeight(); } + }, (type === "init") ? 100 : 0); + } + } else { // FADE: + slider.slides.css({"width": "100%", "float": "left", "marginRight": "-100%", "position": "relative"}); + if (type === "init") { + if (!touch) { + //slider.slides.eq(slider.currentSlide).fadeIn(slider.vars.animationSpeed, slider.vars.easing); + if (slider.vars.fadeFirstSlide == false) { + slider.slides.css({ "opacity": 0, "display": "block", "zIndex": 1 }).eq(slider.currentSlide).css({"zIndex": 2}).css({"opacity": 1}); + } else { + slider.slides.css({ "opacity": 0, "display": "block", "zIndex": 1 }).eq(slider.currentSlide).css({"zIndex": 2}).animate({"opacity": 1},slider.vars.animationSpeed,slider.vars.easing); + } + } else { + slider.slides.css({ "opacity": 0, "display": "block", "webkitTransition": "opacity " + slider.vars.animationSpeed / 1000 + "s ease", "zIndex": 1 }).eq(slider.currentSlide).css({ "opacity": 1, "zIndex": 2}); + } + } + // SMOOTH HEIGHT: + if (slider.vars.smoothHeight) { methods.smoothHeight(); } + } + // !CAROUSEL: + // CANDIDATE: active slide + if (!carousel) { slider.slides.removeClass(namespace + "active-slide").eq(slider.currentSlide).addClass(namespace + "active-slide"); } + + //FlexSlider: init() Callback + slider.vars.init(slider); + }; + + slider.doMath = function() { + var slide = slider.slides.first(), + slideMargin = slider.vars.itemMargin, + minItems = slider.vars.minItems, + maxItems = slider.vars.maxItems; + + slider.w = (slider.viewport===undefined) ? slider.width() : slider.viewport.width(); + slider.h = slide.height(); + slider.boxPadding = slide.outerWidth() - slide.width(); + + // CAROUSEL: + if (carousel) { + slider.itemT = slider.vars.itemWidth + slideMargin; + slider.itemM = slideMargin; + slider.minW = (minItems) ? minItems * slider.itemT : slider.w; + slider.maxW = (maxItems) ? (maxItems * slider.itemT) - slideMargin : slider.w; + slider.itemW = (slider.minW > slider.w) ? (slider.w - (slideMargin * (minItems - 1)))/minItems : + (slider.maxW < slider.w) ? (slider.w - (slideMargin * (maxItems - 1)))/maxItems : + (slider.vars.itemWidth > slider.w) ? slider.w : slider.vars.itemWidth; + + slider.visible = Math.floor(slider.w/(slider.itemW)); + slider.move = (slider.vars.move > 0 && slider.vars.move < slider.visible ) ? slider.vars.move : slider.visible; + slider.pagingCount = Math.ceil(((slider.count - slider.visible)/slider.move) + 1); + slider.last = slider.pagingCount - 1; + slider.limit = (slider.pagingCount === 1) ? 0 : + (slider.vars.itemWidth > slider.w) ? (slider.itemW * (slider.count - 1)) + (slideMargin * (slider.count - 1)) : ((slider.itemW + slideMargin) * slider.count) - slider.w - slideMargin; + } else { + slider.itemW = slider.w; + slider.itemM = slideMargin; + slider.pagingCount = slider.count; + slider.last = slider.count - 1; + } + slider.computedW = slider.itemW - slider.boxPadding; + slider.computedM = slider.itemM; + }; + + slider.update = function(pos, action) { + slider.doMath(); + + // update currentSlide and slider.animatingTo if necessary + if (!carousel) { + if (pos < slider.currentSlide) { + slider.currentSlide += 1; + } else if (pos <= slider.currentSlide && pos !== 0) { + slider.currentSlide -= 1; + } + slider.animatingTo = slider.currentSlide; + } + + // update controlNav + if (slider.vars.controlNav && !slider.manualControls) { + if ((action === "add" && !carousel) || slider.pagingCount > slider.controlNav.length) { + methods.controlNav.update("add"); + } else if ((action === "remove" && !carousel) || slider.pagingCount < slider.controlNav.length) { + if (carousel && slider.currentSlide > slider.last) { + slider.currentSlide -= 1; + slider.animatingTo -= 1; + } + methods.controlNav.update("remove", slider.last); + } + } + // update directionNav + if (slider.vars.directionNav) { methods.directionNav.update(); } + + }; + + slider.addSlide = function(obj, pos) { + var $obj = $(obj); + + slider.count += 1; + slider.last = slider.count - 1; + + // append new slide + if (vertical && reverse) { + (pos !== undefined) ? slider.slides.eq(slider.count - pos).after($obj) : slider.container.prepend($obj); + } else { + (pos !== undefined) ? slider.slides.eq(pos).before($obj) : slider.container.append($obj); + } + + // update currentSlide, animatingTo, controlNav, and directionNav + slider.update(pos, "add"); + + // update slider.slides + slider.slides = $(slider.vars.selector + ':not(.clone)', slider); + // re-setup the slider to accomdate new slide + slider.setup(); + + //FlexSlider: added() Callback + slider.vars.added(slider); + }; + slider.removeSlide = function(obj) { + var pos = (isNaN(obj)) ? slider.slides.index($(obj)) : obj; + + // update count + slider.count -= 1; + slider.last = slider.count - 1; + + // remove slide + if (isNaN(obj)) { + $(obj, slider.slides).remove(); + } else { + (vertical && reverse) ? slider.slides.eq(slider.last).remove() : slider.slides.eq(obj).remove(); + } + + // update currentSlide, animatingTo, controlNav, and directionNav + slider.doMath(); + slider.update(pos, "remove"); + + // update slider.slides + slider.slides = $(slider.vars.selector + ':not(.clone)', slider); + // re-setup the slider to accomdate new slide + slider.setup(); + + // FlexSlider: removed() Callback + slider.vars.removed(slider); + }; + + //FlexSlider: Initialize + methods.init(); + }; + + // Ensure the slider isn't focussed if the window loses focus. + $( window ).blur( function ( e ) { + focused = false; + }).focus( function ( e ) { + focused = true; + }); + + //FlexSlider: Default Settings + $.flexslider.defaults = { + namespace: "flex-", //{NEW} String: Prefix string attached to the class of every element generated by the plugin + selector: ".slides > li", //{NEW} Selector: Must match a simple pattern. '{container} > {slide}' -- Ignore pattern at your own peril + animation: "fade", //String: Select your animation type, "fade" or "slide" + easing: "swing", //{NEW} String: Determines the easing method used in jQuery transitions. jQuery easing plugin is supported! + direction: "horizontal", //String: Select the sliding direction, "horizontal" or "vertical" + reverse: false, //{NEW} Boolean: Reverse the animation direction + animationLoop: true, //Boolean: Should the animation loop? If false, directionNav will received "disable" classes at either end + smoothHeight: false, //{NEW} Boolean: Allow height of the slider to animate smoothly in horizontal mode + startAt: 0, //Integer: The slide that the slider should start on. Array notation (0 = first slide) + slideshow: true, //Boolean: Animate slider automatically + slideshowSpeed: 7000, //Integer: Set the speed of the slideshow cycling, in milliseconds + animationSpeed: 600, //Integer: Set the speed of animations, in milliseconds + initDelay: 0, //{NEW} Integer: Set an initialization delay, in milliseconds + randomize: false, //Boolean: Randomize slide order + fadeFirstSlide: true, //Boolean: Fade in the first slide when animation type is "fade" + thumbCaptions: false, //Boolean: Whether or not to put captions on thumbnails when using the "thumbnails" controlNav. + + // Usability features + pauseOnAction: true, //Boolean: Pause the slideshow when interacting with control elements, highly recommended. + pauseOnHover: false, //Boolean: Pause the slideshow when hovering over slider, then resume when no longer hovering + pauseInvisible: true, //{NEW} Boolean: Pause the slideshow when tab is invisible, resume when visible. Provides better UX, lower CPU usage. + useCSS: true, //{NEW} Boolean: Slider will use CSS3 transitions if available + touch: true, //{NEW} Boolean: Allow touch swipe navigation of the slider on touch-enabled devices + video: false, //{NEW} Boolean: If using video in the slider, will prevent CSS3 3D Transforms to avoid graphical glitches + + // Primary Controls + controlNav: true, //Boolean: Create navigation for paging control of each slide? Note: Leave true for manualControls usage + directionNav: true, //Boolean: Create navigation for previous/next navigation? (true/false) + prevText: "Previous", //String: Set the text for the "previous" directionNav item + nextText: "Next", //String: Set the text for the "next" directionNav item + + // Secondary Navigation + keyboard: true, //Boolean: Allow slider navigating via keyboard left/right keys + multipleKeyboard: false, //{NEW} Boolean: Allow keyboard navigation to affect multiple sliders. Default behavior cuts out keyboard navigation with more than one slider present. + mousewheel: false, //{UPDATED} Boolean: Requires jquery.mousewheel.js (https://github.com/brandonaaron/jquery-mousewheel) - Allows slider navigating via mousewheel + pausePlay: false, //Boolean: Create pause/play dynamic element + pauseText: "Pause", //String: Set the text for the "pause" pausePlay item + playText: "Play", //String: Set the text for the "play" pausePlay item + + // Special properties + controlsContainer: "", //{UPDATED} jQuery Object/Selector: Declare which container the navigation elements should be appended too. Default container is the FlexSlider element. Example use would be $(".flexslider-container"). Property is ignored if given element is not found. + manualControls: "", //{UPDATED} jQuery Object/Selector: Declare custom control navigation. Examples would be $(".flex-control-nav li") or "#tabs-nav li img", etc. The number of elements in your controlNav should match the number of slides/tabs. + customDirectionNav: "", //{NEW} jQuery Object/Selector: Custom prev / next button. Must be two jQuery elements. In order to make the events work they have to have the classes "prev" and "next" (plus namespace) + sync: "", //{NEW} Selector: Mirror the actions performed on this slider with another slider. Use with care. + asNavFor: "", //{NEW} Selector: Internal property exposed for turning the slider into a thumbnail navigation for another slider + + // Carousel Options + itemWidth: 0, //{NEW} Integer: Box-model width of individual carousel items, including horizontal borders and padding. + itemMargin: 0, //{NEW} Integer: Margin between carousel items. + minItems: 1, //{NEW} Integer: Minimum number of carousel items that should be visible. Items will resize fluidly when below this. + maxItems: 0, //{NEW} Integer: Maxmimum number of carousel items that should be visible. Items will resize fluidly when above this limit. + move: 0, //{NEW} Integer: Number of carousel items that should move on animation. If 0, slider will move all visible items. + allowOneSlide: true, //{NEW} Boolean: Whether or not to allow a slider comprised of a single slide + + // Callback API + start: function(){}, //Callback: function(slider) - Fires when the slider loads the first slide + before: function(){}, //Callback: function(slider) - Fires asynchronously with each slider animation + after: function(){}, //Callback: function(slider) - Fires after each slider animation completes + end: function(){}, //Callback: function(slider) - Fires when the slider reaches the last slide (asynchronous) + added: function(){}, //{NEW} Callback: function(slider) - Fires after a slide is added + removed: function(){}, //{NEW} Callback: function(slider) - Fires after a slide is removed + init: function() {} //{NEW} Callback: function(slider) - Fires after the slider is initially setup + }; + + //FlexSlider: Plugin Function + $.fn.flexslider = function(options) { + if (options === undefined) { options = {}; } + + if (typeof options === "object") { + return this.each(function() { + var $this = $(this), + selector = (options.selector) ? options.selector : ".slides > li", + $slides = $this.find(selector); + + if ( ( $slides.length === 1 && options.allowOneSlide === true ) || $slides.length === 0 ) { + $slides.fadeIn(400); + if (options.start) { options.start($this); } + } else if ($this.data('flexslider') === undefined) { + new $.flexslider(this, options); + } + }); + } else { + // Helper strings to quickly perform functions on the slider + var $slider = $(this).data('flexslider'); + switch (options) { + case "play": $slider.play(); break; + case "pause": $slider.pause(); break; + case "stop": $slider.stop(); break; + case "next": $slider.flexAnimate($slider.getTarget("next"), true); break; + case "prev": + case "previous": $slider.flexAnimate($slider.getTarget("prev"), true); break; + default: if (typeof options === "number") { $slider.flexAnimate(options, true); } + } + } + }; +})(jQuery); diff --git a/wp-content/themes/tortuga/assets/js/navigation.js b/wp-content/themes/tortuga/assets/js/navigation.js new file mode 100644 index 0000000..429a3c0 --- /dev/null +++ b/wp-content/themes/tortuga/assets/js/navigation.js @@ -0,0 +1,122 @@ +/* global tortugaScreenReaderText */ +/** + * Theme Navigation + * + * @package Tortuga + */ + +(function( $ ) { + + function initNavigation( containerClass, naviClass ) { + var container = $( containerClass ); + var navigation = $( naviClass ); + + // Return early if navigation is missing. + if ( ! navigation.length ) { + return; + } + + // Enable menuToggle. + (function() { + var menuToggle = container.find( '.menu-toggle' ); + + // Return early if menuToggle is missing. + if ( ! menuToggle.length ) { + return; + } + + // Add an initial value for the attribute. + menuToggle.attr( 'aria-expanded', 'false' ); + + menuToggle.on( 'click.tortuga_', function() { + navigation.toggleClass( 'toggled-on' ); + + $( this ).attr( 'aria-expanded', navigation.hasClass( 'toggled-on' ) ); + }); + })(); + + // Enable dropdownToggles that displays child menu items. + (function() { + + var dropdownToggle = $( ' ';a.commands.find=function(a){o(a),m(a)},a.commands.findPersistent=function(a){o(a),m(a,!1,!0)},a.commands.findPersistentNext=function(a){m(a,!1,!0,!0)},a.commands.findPersistentPrev=function(a){m(a,!0,!0,!0)},a.commands.findNext=m,a.commands.findPrev=function(a){m(a,!0)},a.commands.clearSearch=o,a.commands.replace=q,a.commands.replaceAll=function(a){q(a,!0)}})},{"../../lib/codemirror":59,"../dialog/dialog":3,"./searchcursor":49}],49:[function(a,b,c){!function(d){"object"==typeof c&&"object"==typeof b?d(a("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],d):d(CodeMirror)}(function(a){"use strict";function b(a){var b=a.flags;return null!=b?b:(a.ignoreCase?"i":"")+(a.global?"g":"")+(a.multiline?"m":"")}function c(a){return a.global?a:new RegExp(a.source,b(a)+"g")}function d(a){return/\\s|\\n|\n|\\W|\\D|\[\^/.test(a.source)}function e(a,b,d){b=c(b);for(var e=d.line,f=d.ch,g=a.lastLine();e<=g;e++,f=0){b.lastIndex=f;var h=a.getLine(e),i=b.exec(h);if(i)return{from:p(e,i.index),to:p(e,i.index+i[0].length),match:i}}}function f(a,b,f){if(!d(b))return e(a,b,f);b=c(b);for(var g,h=1,i=f.line,j=a.lastLine();i<=j;){for(var k=0;k=h;e--,f=-1){var i=a.getLine(e);f>-1&&(i=i.slice(0,f));var j=g(i,b);if(j)return{from:p(e,j.index),to:p(e,j.index+j[0].length),match:j}}}function i(a,b,d){b=c(b);for(var e,f=1,h=d.line,i=a.firstLine();h>=i;){for(var j=0;j>1,h=d(a.slice(0,g)).length;if(h==c)return g;h>c?f=g:e=g+1}}function k(a,b,c,d){if(!b.length)return null;var e=d?n:o,f=e(b).split(/\r|\n\r?/);a:for(var g=c.line,h=c.ch,i=a.lastLine()+1-f.length;g<=i;g++,h=0){var k=a.getLine(g).slice(h),l=e(k);if(1==f.length){var m=l.indexOf(f[0]);if(m==-1)continue a;var c=j(k,l,m,e)+h;return{from:p(g,j(k,l,m,e)+h),to:p(g,j(k,l,m+f[0].length,e)+h)}}var q=l.length-f[0].length;if(l.slice(q)==f[0]){for(var r=1;r=i;g--,h=-1){var k=a.getLine(g);h>-1&&(k=k.slice(0,h));var l=e(k);if(1==f.length){var m=l.lastIndexOf(f[0]);if(m==-1)continue a;return{from:p(g,j(k,l,m,e)),to:p(g,j(k,l,m+f[0].length,e))}}var q=f[f.length-1];if(l.slice(0,q.length)==q){for(var r=1,c=g-f.length+1;r0);)d.push({anchor:e.from(),head:e.to()});d.length&&this.setSelections(d,0)})})},{"../../lib/codemirror":59}],50:[function(a,b,c){!function(d){"object"==typeof c&&"object"==typeof b?d(a("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],d):d(CodeMirror)}(function(a){"use strict";function b(a){for(var b=0;b=c.line,n=m?c:i(l,0),o=a.markText(k,n,{className:f});if(null==d?e.push(o):e.splice(d++,0,o),m)break;g=l}}function e(a){for(var b=a.state.markedSelection,c=0;c1)return f(a);var b=a.getCursor("start"),c=a.getCursor("end"),g=a.state.markedSelection;if(!g.length)return d(a,b,c);var i=g[0].find(),k=g[g.length-1].find();if(!i||!k||c.line-b.line<=h||j(b,k.to)>=0||j(c,i.from)<=0)return f(a);for(;j(b,i.from)>0;)g.shift().clear(),i=g[0].find();for(j(b,i.from)<0&&(i.to.line-b.line0&&(c.line-k.from.line=b.mouseX&&f.top<=b.mouseY&&f.bottom>=b.mouseY&&(d=!0)}var g=d?b.value:"";a.display.lineDiv.style.cursor!=g&&(a.display.lineDiv.style.cursor=g)}}a.defineOption("selectionPointer",!1,function(e,f){var g=e.state.selectionPointer;g&&(a.off(e.getWrapperElement(),"mousemove",g.mousemove),a.off(e.getWrapperElement(),"mouseout",g.mouseout),a.off(window,"scroll",g.windowScroll),e.off("cursorActivity",d),e.off("scroll",d),e.state.selectionPointer=null,e.display.lineDiv.style.cursor=""),f&&(g=e.state.selectionPointer={value:"string"==typeof f?f:"default",mousemove:function(a){b(e,a)},mouseout:function(a){c(e,a)},windowScroll:function(){d(e)},rects:null,mouseX:null,mouseY:null,willUpdate:!1},a.on(e.getWrapperElement(),"mousemove",g.mousemove),a.on(e.getWrapperElement(),"mouseout",g.mouseout),a.on(window,"scroll",g.windowScroll),e.on("cursorActivity",d),e.on("scroll",d))})})},{"../../lib/codemirror":59}],53:[function(a,b,c){!function(d){"object"==typeof c&&"object"==typeof b?d(a("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],d):d(CodeMirror)}(function(a){"use strict";function b(a,b,c){var d=a.docs[b];d?c(F(a,d)):a.options.getFile?a.options.getFile(b,c):c(null)}function c(a,b,c){for(var d in a.docs){var e=a.docs[d];if(e.doc==b)return e}if(!c)for(var f=0;;++f)if(d="[doc"+(f||"")+"]",!a.docs[d]){c=d;break}return a.addDoc(c,b)}function d(b,d){return"string"==typeof d?b.docs[d]:(d instanceof a&&(d=d.getDoc()),d instanceof a.Doc?c(b,d):void 0)}function e(a,b,d){var e=c(a,b),g=a.cachedArgHints;g&&g.doc==b&&L(g.start,d.to)>=0&&(a.cachedArgHints=null);var h=e.changed;null==h&&(e.changed=h={from:d.from.line,to:d.from.line});var i=d.from.line+(d.text.length-1);d.from.line=h.to&&(h.to=i+1),h.from>d.from.line&&(h.from=d.from.line),b.lineCount()>J&&d.to-h.from>100&&setTimeout(function(){e.changed&&e.changed.to-e.changed.from>100&&f(a,e)},200)}function f(a,b){a.server.request({files:[{type:"full",name:b.name,text:F(a,b)}]},function(a){a?window.console.error(a):b.changed=null})}function g(b,c,d){b.request(c,{type:"completions",types:!0,docs:!0,urls:!0},function(e,f){if(e)return D(b,c,e);var g=[],i="",j=f.start,k=f.end;'["'==c.getRange(H(j.line,j.ch-2),j)&&'"]'!=c.getRange(k,H(k.line,k.ch+2))&&(i='"]');for(var l=0;l=m;--j){for(var o=c.getLine(j),p=0,q=0;;){var r=o.indexOf("\t",q);if(r==-1)break;p+=i-(r+p)%i-1,q=r+1}if(g=f.column-p,"("==o.charAt(g)){n=!0;break}}if(n){var s=H(j,g),t=b.cachedArgHints;return t&&t.doc==c.getDoc()&&0==L(s,t.start)?k(b,c,h):void b.request(c,{type:"type",preferFunction:!0,end:s},function(a,d){!a&&d.type&&/^fn\(/.test(d.type)&&(b.cachedArgHints={start:s,type:l(d.type),name:d.exprName||d.name||"fn",guess:d.guess,doc:c.getDoc()},k(b,c,h))})}}}}}function k(a,b,c){E(a);for(var d=a.cachedArgHints,e=d.type,f=w("span",d.guess?I+"fhint-guess":null,w("span",I+"fname",d.name),"("),g=0;g\xa0":")")),e.rettype&&f.appendChild(w("span",I+"type",e.rettype));var i=b.cursorCoords(null,"page"),j=a.activeArgHints=A(i.right+1,i.bottom,f);setTimeout(function(){j.clear=z(b,function(){a.activeArgHints==j&&E(a)})},20)}function l(a){function b(b){for(var c=0,e=d;;){var f=a.charAt(d);if(b.test(f)&&!c)return a.slice(e,d);/[{\[\(]/.test(f)?++c:/[}\]\)]/.test(f)&&--c,++d}}var c=[],d=3;if(")"!=a.charAt(d))for(;;){var e=a.slice(d).match(/^([^, \(\[\{]+): /);if(e&&(d+=e[0].length,e=e[1]),c.push({name:e,type:b(/[\),]/)}),")"==a.charAt(d))break;d+=2}var f=a.slice(d).match(/^\) -> (.*)$/);return{args:c,rettype:f&&f[1]}}function m(a,b){function d(d){var e={type:"definition",variable:d||null},f=c(a,b.getDoc());a.server.request(u(a,f,e),function(c,d){if(c)return D(a,b,c);if(!d.file&&d.url)return void window.open(d.url);if(d.file){var e,g=a.docs[d.file];if(g&&(e=p(g.doc,d)))return a.jumpStack.push({file:f.name,start:b.getCursor("from"),end:b.getCursor("to")}),void o(a,f,g,e.start,e.end)}D(a,b,"Could not find a definition.")})}q(b)?d():x(b,"Jump to variable",function(a){a&&d(a)})}function n(a,b){var d=a.jumpStack.pop(),e=d&&a.docs[d.file];e&&o(a,c(a,b.getDoc()),e,d.start,d.end)}function o(a,b,c,d,e){c.doc.setSelection(d,e),b!=c&&a.options.switchToDoc&&(E(a),a.options.switchToDoc(c.name,c.doc))}function p(a,b){for(var c=b.context.slice(0,b.contextOffset).split("\n"),d=b.start.line-(c.length-1),e=H(d,(1==c.length?b.start.ch:a.getLine(d).length)-c[0].length),f=a.getLine(d).slice(e.ch),g=d+1;g=0&&L(h,j.end)<=0&&(g=f.length-1))}b.setSelections(f,g)})}function t(a,b){for(var c=Object.create(null),d=0;dJ&&g!==!1&&b.changed.to-b.changed.from<100&&b.changed.from<=h.line&&b.changed.to>c.end.line){e.push(v(b,h,c.end)),c.file="#0";var f=e[0].offsetLines;null!=c.start&&(c.start=H(c.start.line- -f,c.start.ch)),c.end=H(c.end.line-f,c.end.ch)}else e.push({type:"full",name:b.name,text:F(a,b)}),c.file=b.name,b.changed=null;else c.file=b.name;for(var i in a.docs){var j=a.docs[i];j.changed&&j!=b&&(e.push({type:"full",name:j.name,text:F(a,j)}),j.changed=null)}return{query:c,files:e}}function v(b,c,d){for(var e,f=b.doc,g=null,h=null,i=4,j=c.line-1,k=Math.max(0,j-50);j>=k;--j){var l=f.getLine(j),m=l.search(/\bfunction\b/);if(!(m<0)){var n=a.countColumn(l,null,i);null!=g&&g<=n||(g=n,h=j)}}null==h&&(h=k);var o=Math.min(f.lastLine(),d.line+20);if(null==g||g==a.countColumn(f.getLine(c.line),null,i))e=o;else for(e=d.line+1;e",c):c(prompt(b,""))}function y(b,c,d){function e(){j=!0,i||f()}function f(){b.state.ternTooltip=null,h.parentNode&&C(h),k()}b.state.ternTooltip&&B(b.state.ternTooltip);var g=b.cursorCoords(),h=b.state.ternTooltip=A(g.right+1,g.bottom,c),i=!1,j=!1;a.on(h,"mousemove",function(){i=!0}),a.on(h,"mouseout",function(b){a.contains(h,b.relatedTarget||b.toElement)||(j?f():i=!1)}),setTimeout(e,d.options.hintDelay?d.options.hintDelay:1700);var k=z(b,f)}function z(a,b){return a.on("cursorActivity",b),a.on("blur",b),a.on("scroll",b),a.on("setDoc",b),function(){a.off("cursorActivity",b),a.off("blur",b),a.off("scroll",b),a.off("setDoc",b)}}function A(a,b,c){var d=w("div",I+"tooltip",c);return d.style.left=a+"px",d.style.top=b+"px",document.body.appendChild(d),d}function B(a){var b=a&&a.parentNode;b&&b.removeChild(a)}function C(a){a.style.opacity="0",setTimeout(function(){B(a)},1100)}function D(a,b,c){a.options.showError?a.options.showError(b,c):y(b,String(c),a)}function E(a){a.activeArgHints&&(a.activeArgHints.clear&&a.activeArgHints.clear(),B(a.activeArgHints),a.activeArgHints=null)}function F(a,b){var c=b.doc.getValue();return a.options.fileFilter&&(c=a.options.fileFilter(c,b.name,b.doc)),c}function G(a){function c(a,b){b&&(a.id=++e,f[e]=b),d.postMessage(a)}var d=a.worker=new Worker(a.options.workerScript);d.postMessage({type:"init",defs:a.options.defs,plugins:a.options.plugins,scripts:a.options.workerDeps});var e=0,f={};d.onmessage=function(d){var e=d.data;"getFile"==e.type?b(a,e.name,function(a,b){c({type:"getFile",err:String(a),text:b,id:e.id})}):"debug"==e.type?window.console.log(e.message):e.id&&f[e.id]&&(f[e.id](e.err,e.body),delete f[e.id])},d.onerror=function(a){for(var b in f)f[b](a);f={}},this.addFile=function(a,b){c({type:"add",name:a,text:b})},this.delFile=function(a){c({type:"del",name:a})},this.request=function(a,b){c({type:"req",body:a},b)}}a.TernServer=function(a){var c=this;this.options=a||{};var d=this.options.plugins||(this.options.plugins={});d.doc_comment||(d.doc_comment=!0),this.docs=Object.create(null),this.options.useWorker?this.server=new G(this):this.server=new tern.Server({getFile:function(a,d){return b(c,a,d)},async:!0,defs:this.options.defs||[],plugins:d}),this.trackChange=function(a,b){e(c,a,b)},this.cachedArgHints=null,this.activeArgHints=null,this.jumpStack=[],this.getHint=function(a,b){return g(c,a,b)},this.getHint.async=!0},a.TernServer.prototype={addDoc:function(b,c){var d={doc:c,name:b,changed:null};return this.server.addFile(b,F(this,d)),a.on(c,"change",this.trackChange),this.docs[b]=d},delDoc:function(b){var c=d(this,b);c&&(a.off(c.doc,"change",this.trackChange),delete this.docs[c.name],this.server.delFile(c.name))},hideDoc:function(a){E(this);var b=d(this,a);b&&b.changed&&f(this,b)},complete:function(a){a.showHint({hint:this.getHint})},showType:function(a,b,c){i(this,a,b,"type",c)},showDocs:function(a,b,c){i(this,a,b,"documentation",c)},updateArgHints:function(a){j(this,a)},jumpToDef:function(a){m(this,a)},jumpBack:function(a){n(this,a)},rename:function(a){r(this,a)},selectName:function(a){s(this,a)},request:function(a,b,d,e){var f=this,g=c(this,a.getDoc()),h=u(this,g,b,e),i=h.query&&this.options.queryOptions&&this.options.queryOptions[h.query.type];if(i)for(var j in i)h.query[j]=i[j];this.server.request(h,function(a,c){!a&&f.options.responseFilter&&(c=f.options.responseFilter(g,b,h,a,c)),d(a,c)})},destroy:function(){E(this),this.worker&&(this.worker.terminate(),this.worker=null)}};var H=a.Pos,I="CodeMirror-Tern-",J=250,K=0,L=a.cmpPos})},{"../../lib/codemirror":59}],54:[function(a,b,c){function d(a,b){postMessage({type:"getFile",name:a,id:++g}),h[g]=b}function e(a,b,c){c&&importScripts.apply(null,c),f=new tern.Server({getFile:d,async:!0,defs:a,plugins:b})}var f;this.onmessage=function(a){var b=a.data;switch(b.type){case"init":return e(b.defs,b.plugins,b.scripts);case"add":return f.addFile(b.name,b.text);case"del":return f.delFile(b.name);case"req":return f.request(b.body,function(a,c){postMessage({id:b.id,body:c,err:a&&String(a)})});case"getFile":var c=h[b.id];return delete h[b.id],c(b.err,b.text);default:throw new Error("Unknown message type: "+b.type)}};var g=0,h={};this.console={log:function(a){postMessage({type:"debug",message:a})}}},{}],55:[function(a,b,c){!function(d){"object"==typeof c&&"object"==typeof b?d(a("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],d):d(CodeMirror)}(function(a){"use strict";function b(a,b,c){for(var d=c.paragraphStart||a.getHelper(b,"paragraphStart"),e=b.line,f=a.firstLine();e>f;--e){var g=a.getLine(e);if(d&&d.test(g))break;if(!/\S/.test(g)){++e;break}}for(var h=c.paragraphEnd||a.getHelper(b,"paragraphEnd"),i=b.line+1,j=a.lastLine();i<=j;++i){var g=a.getLine(i);if(h&&h.test(g)){++i;break}if(!/\S/.test(g))break}return{from:e,to:i}}function c(a,b,c,d){for(var e=b;e0&&!c.test(a.slice(e-1,e+1));--e);for(var f=!0;;f=!1){var g=e;if(d)for(;" "==a.charAt(g-1);)--g;if(0!=g||!f)return{from:g,to:e};e=b}}function d(b,d,f,g){d=b.clipPos(d),f=b.clipPos(f);var h=g.column||80,i=g.wrapOn||/\s\S|-[^\.\d]/,j=g.killTrailingSpace!==!1,k=[],l="",m=d.line,n=b.getRange(d,f,!1);if(!n.length)return null;for(var o=n[0].match(/^[ \t]*/)[0],p=0;ph&&o==t&&c(l,h,i,j);u&&u.from==r&&u.to==r+s?(l=o+q,++m):k.push({text:[s?" ":""],from:e(m,r),to:e(m+1,t.length)})}for(;l.length>h;){var v=c(l,h,i,j);k.push({text:["",o],from:e(m,v.from),to:e(m,v.to)}),l=o+l.slice(v.to),++m}}return k.length&&b.operation(function(){for(var c=0;c=0;g--){var h,i=c[g];if(i.empty()){var j=b(a,i.head,{});h={from:e(j.from,0),to:e(j.to-1)}}else h={from:i.from(),to:i.to()};h.to.line>=f||(f=h.from.line,d(a,h.from,h.to,{}))}})},a.defineExtension("wrapRange",function(a,b,c){return d(this,a,b,c||{})}),a.defineExtension("wrapParagraphsInRange",function(a,c,f){f=f||{};for(var g=this,h=[],i=a.line;i<=c.line;){var j=b(g,e(i,0),f);h.push(j),i=j.to}var k=!1;return h.length&&g.operation(function(){for(var a=h.length-1;a>=0;--a)k=k||d(g,e(h[a].from,0),e(h[a].to-1),f)}),k})})},{"../../lib/codemirror":59}],56:[function(a,b,c){!function(d){"object"==typeof c&&"object"==typeof b?d(a("../lib/codemirror")):"function"==typeof define&&define.amd?define(["../lib/codemirror"],d):d(CodeMirror)}(function(a){"use strict";function b(a,b){return a.line==b.line&&a.ch==b.ch}function c(a){I.push(a),I.length>50&&I.shift()}function d(a){return I.length?void(I[I.length-1]+=a):c(a)}function e(a){return I[I.length-(a?Math.min(a,1):1)]||""}function f(){return I.length>1&&I.pop(),e()}function g(a,e,f,g,h){null==h&&(h=a.getRange(e,f)),g&&J&&J.cm==a&&b(e,J.pos)&&a.isClean(J.gen)?d(h):c(h),a.replaceRange("",e,f,"+delete"),J=g?{cm:a,pos:e,gen:a.changeGeneration()}:null}function h(a,b,c){return a.findPosH(b,c,"char",!0)}function i(a,b,c){return a.findPosH(b,c,"word",!0)}function j(a,b,c){return a.findPosV(b,c,"line",a.doc.sel.goalColumn)}function k(a,b,c){return a.findPosV(b,c,"page",a.doc.sel.goalColumn)}function l(a,b,c){for(var d=b.line,e=a.getLine(d),f=/\S/.test(c<0?e.slice(0,b.ch):e.slice(b.ch)),g=a.firstLine(),h=a.lastLine();;){if(d+=c,dh)return a.clipPos(H(d-c,c<0?0:null));e=a.getLine(d);var i=/\S/.test(e);if(i)f=!0;else if(f)return H(d,0)}}function m(a,b,c){for(var d=b.line,e=b.ch,f=a.getLine(b.line),g=!1;;){var h=f.charAt(e+(c<0?-1:0));if(h){if(g&&/[!?.]/.test(h))return H(d,e+(c>0?1:0));g||(g=/\w/.test(h)),e+=c}else{if(d==(c<0?a.firstLine():a.lastLine()))return H(d,e);if(f=a.getLine(d+c),!/\S/.test(f))return H(d,e);d+=c,e=c<0?f.length:0}}}function n(a,c,d){var e;if(a.findMatchingBracket&&(e=a.findMatchingBracket(c,{strict:!0}))&&e.match&&(e.forward?1:-1)==d)return d>0?H(e.to.line,e.to.ch+1):e.to;for(var f=!0;;f=!1){var g=a.getTokenAt(c),h=H(c.line,d<0?g.start:g.end);if(!(f&&d>0&&g.end==c.ch)&&/\w/.test(g.string))return h;var i=a.findPosH(h,d,"char");if(b(h,i))return c;c=i}}function o(a,b){var c=a.state.emacsPrefix;return c?(w(a),"-"==c?-1:Number(c)):b?null:1}function p(a){var b="string"==typeof a?function(b){b.execCommand(a)}:a;return function(a){var c=o(a);b(a);for(var d=1;d1&&"+input"==b.origin){for(var d=b.text.join("\n"),e="",f=1;f',c,{bottom:!0}):c(prompt(b,""))}function D(a,b){var c=a.getCursor(),d=a.findPosH(c,1,"word");a.replaceRange(b(a.getRange(c,d)),c,d),a.setCursor(d)}function E(a){for(var b=a.getCursor(),c=b.line,d=b.ch,e=[];c>=a.firstLine();){for(var f=a.getLine(c),g=null==d?f.length:d;g>0;){var d=f.charAt(--g);if(")"==d)e.push("(");else if("]"==d)e.push("[");else if("}"==d)e.push("{");else if(/[\(\{\[]/.test(d)&&(!e.length||e.pop()!=d))return a.extendSelection(H(c,g))}--c,d=null}}function F(a){a.execCommand("clearSearch"),B(a)}function G(a){M[a]=function(b){u(b,a)},L["Ctrl-"+a]=function(b){u(b,a)},K["Ctrl-"+a]=!0}var H=a.Pos,I=[],J=null,K={"Alt-G":!0,"Ctrl-X":!0,"Ctrl-Q":!0,"Ctrl-U":!0};a.emacs={kill:g,killRegion:t,repeated:p};for(var L=a.keyMap.emacs=a.normalizeKeyMap({"Ctrl-W":function(a){g(a,a.getCursor("start"),a.getCursor("end"))},"Ctrl-K":p(function(a){var b=a.getCursor(),c=a.clipPos(H(b.line)),d=a.getRange(b,c);/\S/.test(d)||(d+="\n",c=H(b.line+1,0)),g(a,b,c,!0,d)}),"Alt-W":function(a){c(a.getSelection()),B(a)},"Ctrl-Y":function(a){var b=a.getCursor();a.replaceRange(e(o(a)),b,b,"paste"),a.setSelection(b,a.getCursor())},"Alt-Y":function(a){a.replaceSelection(f(),"around","paste")},"Ctrl-Space":A,"Ctrl-Shift-2":A,"Ctrl-F":r(h,1),"Ctrl-B":r(h,-1),Right:r(h,1),Left:r(h,-1),"Ctrl-D":function(a){s(a,h,1)},Delete:function(a){t(a)||s(a,h,1)},"Ctrl-H":function(a){s(a,h,-1)},Backspace:function(a){t(a)||s(a,h,-1)},"Alt-F":r(i,1),"Alt-B":r(i,-1),"Alt-D":function(a){s(a,i,1)},"Alt-Backspace":function(a){s(a,i,-1)},"Ctrl-N":r(j,1),"Ctrl-P":r(j,-1),Down:r(j,1),Up:r(j,-1),"Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd",End:"goLineEnd",Home:"goLineStart","Alt-V":r(k,-1),"Ctrl-V":r(k,1),PageUp:r(k,-1),PageDown:r(k,1),"Ctrl-Up":r(l,-1),"Ctrl-Down":r(l,1),"Alt-A":r(m,-1),"Alt-E":r(m,1),"Alt-K":function(a){s(a,m,1)},"Ctrl-Alt-K":function(a){s(a,n,1)},"Ctrl-Alt-Backspace":function(a){s(a,n,-1)},"Ctrl-Alt-F":r(n,1),"Ctrl-Alt-B":r(n,-1),"Shift-Ctrl-Alt-2":function(a){var b=a.getCursor();a.setSelection(q(a,b,n,1),b)},"Ctrl-Alt-T":function(a){var b=n(a,a.getCursor(),-1),c=n(a,b,1),d=n(a,c,1),e=n(a,d,-1);a.replaceRange(a.getRange(e,d)+a.getRange(c,e)+a.getRange(b,c),b,d)},"Ctrl-Alt-U":p(E),"Alt-Space":function(a){for(var b=a.getCursor(),c=b.ch,d=b.ch,e=a.getLine(b.line);c&&/\s/.test(e.charAt(c-1));)--c;for(;d0?a.setCursor(b-1):void C(a,"Goto line",function(b){var c;b&&!isNaN(c=Number(b))&&c==(0|c)&&c>0&&a.setCursor(c-1)})},"Ctrl-X Tab":function(a){a.indentSelection(o(a,!0)||a.getOption("indentUnit"))},"Ctrl-X Ctrl-X":function(a){a.setSelection(a.getCursor("head"),a.getCursor("anchor"))},"Ctrl-X Ctrl-S":"save","Ctrl-X Ctrl-W":"save","Ctrl-X S":"saveAll","Ctrl-X F":"open","Ctrl-X U":p("undo"),"Ctrl-X K":"close","Ctrl-X Delete":function(a){g(a,a.getCursor(),m(a,a.getCursor(),1),!0)},"Ctrl-X H":"selectAll","Ctrl-Q Tab":p("insertTab"),"Ctrl-U":y}),M={"Ctrl-G":w},N=0;N<10;++N)G(String(N));G("-")})},{"../lib/codemirror":59}],57:[function(a,b,c){!function(d){"object"==typeof c&&"object"==typeof b?d(a("../lib/codemirror"),a("../addon/search/searchcursor"),a("../addon/edit/matchbrackets")):"function"==typeof define&&define.amd?define(["../lib/codemirror","../addon/search/searchcursor","../addon/edit/matchbrackets"],d):d(CodeMirror)}(function(a){"use strict";function b(b,c,d){if(d<0&&0==c.ch)return b.clipPos(o(c.line-1));var e=b.getLine(c.line);if(d>0&&c.ch>=e.length)return b.clipPos(o(c.line+1,0));for(var f,g="start",h=c.ch,i=d<0?0:e.length,j=0;h!=i;h+=d,j++){var k=e.charAt(d<0?h-1:h),l="_"!=k&&a.isWordChar(k)?"w":"o";if("w"==l&&k.toUpperCase()==k&&(l="W"),"start"==g)"o"!=l&&(g="in",f=l);else if("in"==g&&f!=l){if("w"==f&&"W"==l&&d<0&&h--,"W"==f&&"w"==l&&d>0){f="w";continue}break}}return o(c.line,h)}function c(a,c){a.extendSelectionsBy(function(d){return a.display.shift||a.doc.extend||d.empty()?b(a.doc,d.head,c):c<0?d.from():d.to()})}function d(b,c){return b.isReadOnly()?a.Pass:(b.operation(function(){for(var a=b.listSelections().length,d=[],e=-1,f=0;f=0;h--){var i=d[f[h]];if(!(j&&a.cmpPos(i.head,j)>0)){var k=e(b,i.head);j=k.from,b.replaceRange(c(k.word),k.from,k.to)}}})}function k(b){var c=b.getCursor("from"),d=b.getCursor("to");if(0==a.cmpPos(c,d)){var f=e(b,c);if(!f.word)return;c=f.from,d=f.to}return{from:c,to:d,query:b.getRange(c,d),word:f}}function l(a,b){var c=k(a);if(c){var d=c.query,e=a.getSearchCursor(d,b?c.to:c.from);(b?e.findNext():e.findPrevious())?a.setSelection(e.from(),e.to()):(e=a.getSearchCursor(d,b?o(a.firstLine(),0):a.clipPos(o(a.lastLine()))),(b?e.findNext():e.findPrevious())?a.setSelection(e.from(),e.to()):c.word&&a.setSelection(c.from,c.to))}}var m=a.keyMap.sublime={fallthrough:"default"},n=a.commands,o=a.Pos,p=a.keyMap["default"]==a.keyMap.macDefault,q=p?"Cmd-":"Ctrl-",r=p?"Ctrl-":"Alt-";n[m[r+"Left"]="goSubwordLeft"]=function(a){c(a,-1)},n[m[r+"Right"]="goSubwordRight"]=function(a){c(a,1)},p&&(m["Cmd-Left"]="goLineStartSmart");var s=p?"Ctrl-Alt-":"Ctrl-";n[m[s+"Up"]="scrollLineUp"]=function(a){var b=a.getScrollInfo();if(!a.somethingSelected()){var c=a.lineAtHeight(b.top+b.clientHeight,"local");a.getCursor().line>=c&&a.execCommand("goLineUp")}a.scrollTo(null,b.top-a.defaultTextHeight())},n[m[s+"Down"]="scrollLineDown"]=function(a){var b=a.getScrollInfo();if(!a.somethingSelected()){var c=a.lineAtHeight(b.top,"local")+1;a.getCursor().line<=c&&a.execCommand("goLineDown")}a.scrollTo(null,b.top+a.defaultTextHeight())},n[m["Shift-"+q+"L"]="splitSelectionByLine"]=function(a){for(var b=a.listSelections(),c=[],d=0;de.line&&g==f.line&&0==f.ch||c.push({anchor:g==e.line?e:o(g,0),head:g==f.line?f:o(g)});a.setSelections(c,0)},m["Shift-Tab"]="indentLess",n[m.Esc="singleSelectionTop"]=function(a){var b=a.listSelections()[0];a.setSelection(b.anchor,b.head,{scroll:!1})},n[m[q+"L"]="selectLine"]=function(a){for(var b=a.listSelections(),c=[],d=0;de?d.push(i,j):d.length&&(d[d.length-1]=j),e=j}b.operation(function(){for(var a=0;ab.lastLine()?b.replaceRange("\n"+g,o(b.lastLine()),null,"+swapLine"):b.replaceRange(g+"\n",o(e,0),null,"+swapLine")}b.setSelections(f),b.scrollIntoView()})},n[m[v+"Down"]="swapLineDown"]=function(b){if(b.isReadOnly())return a.Pass;for(var c=b.listSelections(),d=[],e=b.lastLine()+1,f=c.length-1;f>=0;f--){var g=c[f],h=g.to().line+1,i=g.from().line;0!=g.to().ch||g.empty()||h--,h=0;a-=2){var c=d[a],e=d[a+1],f=b.getLine(c);c==b.lastLine()?b.replaceRange("",o(c-1),o(c),"+swapLine"):b.replaceRange("",o(c,0),o(c+1,0),"+swapLine"),b.replaceRange(f+"\n",o(e,0),null,"+swapLine")}b.scrollIntoView()})},n[m[q+"/"]="toggleCommentIndented"]=function(a){a.toggleComment({indent:!0})},n[m[q+"J"]="joinLines"]=function(a){for(var b=a.listSelections(),c=[],d=0;d=0;e--){var f=c[e].head,g=b.getRange({line:f.line,ch:0},f),h=a.countColumn(g,null,b.getOption("tabSize")),i=b.findPosH(f,-1,"char",!1);if(g&&!/\S/.test(g)&&h%d==0){var j=new o(f.line,a.findColumn(g,h-d,d));j.ch!=f.ch&&(i=j)}b.replaceRange("",i,f,"+delete")}})},n[m[w+q+"K"]="delLineRight"]=function(a){a.operation(function(){for(var b=a.listSelections(),c=b.length-1;c>=0;c--)a.replaceRange("",b[c].anchor,o(b[c].to().line),"+delete");a.scrollIntoView()})},n[m[w+q+"U"]="upcaseAtCursor"]=function(a){j(a,function(a){return a.toUpperCase()})},n[m[w+q+"L"]="downcaseAtCursor"]=function(a){j(a,function(a){return a.toLowerCase()})},n[m[w+q+"Space"]="setSublimeMark"]=function(a){a.state.sublimeMark&&a.state.sublimeMark.clear(),a.state.sublimeMark=a.setBookmark(a.getCursor())},n[m[w+q+"A"]="selectToSublimeMark"]=function(a){var b=a.state.sublimeMark&&a.state.sublimeMark.find();b&&a.setSelection(a.getCursor(),b)},n[m[w+q+"W"]="deleteToSublimeMark"]=function(b){var c=b.state.sublimeMark&&b.state.sublimeMark.find();if(c){var d=b.getCursor(),e=c;if(a.cmpPos(d,e)>0){var f=e;e=d,d=f}b.state.sublimeKilled=b.getRange(d,e),b.replaceRange("",d,e)}},n[m[w+q+"X"]="swapWithSublimeMark"]=function(a){var b=a.state.sublimeMark&&a.state.sublimeMark.find();b&&(a.state.sublimeMark.clear(),a.state.sublimeMark=a.setBookmark(a.getCursor()),a.setCursor(b))},n[m[w+q+"Y"]="sublimeYank"]=function(a){null!=a.state.sublimeKilled&&a.replaceSelection(a.state.sublimeKilled,null,"paste")},m[w+q+"G"]="clearBookmarks",n[m[w+q+"C"]="showInCenter"]=function(a){var b=a.cursorCoords(null,"local");a.scrollTo(null,(b.top+b.bottom)/2-a.getScrollInfo().clientHeight/2)};var x=p?"Ctrl-Shift-":"Ctrl-Alt-";n[m[x+"Up"]="selectLinesUpward"]=function(a){a.operation(function(){for(var b=a.listSelections(),c=0;ca.firstLine()&&a.addSelection(o(d.head.line-1,d.head.ch))}})},n[m[x+"Down"]="selectLinesDownward"]=function(a){a.operation(function(){for(var b=a.listSelections(),c=0;c",type:"keyToKey",toKeys:"h"},{keys:"",type:"keyToKey",toKeys:"l"},{keys:"",type:"keyToKey",toKeys:"k"},{keys:"",type:"keyToKey",toKeys:"j"},{keys:"",type:"keyToKey",toKeys:"l"},{keys:"",type:"keyToKey",toKeys:"h",context:"normal"},{keys:"",type:"keyToKey",toKeys:"W"},{keys:"",type:"keyToKey",toKeys:"B",context:"normal"},{keys:"",type:"keyToKey",toKeys:"w"},{keys:"",type:"keyToKey",toKeys:"b",context:"normal"},{keys:"",type:"keyToKey",toKeys:"j"},{keys:"",type:"keyToKey",toKeys:"k"},{keys:"",type:"keyToKey",toKeys:""},{keys:"",type:"keyToKey",toKeys:""},{keys:"",type:"keyToKey",toKeys:"",context:"insert"},{keys:"",type:"keyToKey",toKeys:"",context:"insert"},{keys:"s",type:"keyToKey",toKeys:"cl",context:"normal"},{keys:"s",type:"keyToKey",toKeys:"c",context:"visual"},{keys:"S",type:"keyToKey",toKeys:"cc",context:"normal"},{keys:"S",type:"keyToKey",toKeys:"VdO",context:"visual"},{keys:"",type:"keyToKey",toKeys:"0"},{keys:"",type:"keyToKey",toKeys:"$"},{keys:"",type:"keyToKey",toKeys:""},{keys:"",type:"keyToKey",toKeys:""},{keys:"",type:"keyToKey",toKeys:"j^",context:"normal"},{keys:"",type:"action",action:"toggleOverwrite",context:"insert"},{keys:"H",type:"motion",motion:"moveToTopLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"M",type:"motion",motion:"moveToMiddleLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"L",type:"motion",motion:"moveToBottomLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"h",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!1}},{keys:"l",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!0}},{keys:"j",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,linewise:!0}},{keys:"k",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,linewise:!0}},{keys:"gj",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!0}},{keys:"gk",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!1}},{keys:"w",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1}},{keys:"W",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1,bigWord:!0}},{keys:"e",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,inclusive:!0}},{keys:"E",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"b",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1}},{keys:"B",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1,bigWord:!0}},{keys:"ge",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,inclusive:!0}},{keys:"gE",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"{",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!1,toJumplist:!0}},{keys:"}",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!0,toJumplist:!0}},{keys:"",type:"motion",motion:"moveByPage",motionArgs:{forward:!0}},{keys:"",type:"motion",motion:"moveByPage",motionArgs:{forward:!1}},{keys:"",type:"motion",motion:"moveByScroll",motionArgs:{forward:!0,explicitRepeat:!0}},{keys:"",type:"motion",motion:"moveByScroll",motionArgs:{forward:!1,explicitRepeat:!0}},{keys:"gg",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!1,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"G",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!0,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"0",type:"motion",motion:"moveToStartOfLine"},{keys:"^",type:"motion",motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"+",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0}},{keys:"-",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,toFirstChar:!0}},{keys:"_",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0,repeatOffset:-1}},{keys:"$",type:"motion",motion:"moveToEol",motionArgs:{inclusive:!0}},{keys:"%",type:"motion",motion:"moveToMatchedSymbol",motionArgs:{inclusive:!0,toJumplist:!0}},{keys:"f",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"F",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!1}},{keys:"t",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"T",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!1}},{keys:";",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!0}},{keys:",",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!1}},{keys:"'",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0,linewise:!0}},{keys:"`",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0}},{keys:"]`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0}},{keys:"[`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1}},{keys:"]'",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0,linewise:!0}},{keys:"['",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1,linewise:!0}},{keys:"]p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0,matchIndent:!0}},{keys:"[p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0,matchIndent:!0}},{keys:"]",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!0,toJumplist:!0}},{keys:"[",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!1,toJumplist:!0}},{keys:"|",type:"motion",motion:"moveToColumn"},{keys:"o",type:"motion",motion:"moveToOtherHighlightedEnd",context:"visual"},{keys:"O",type:"motion",motion:"moveToOtherHighlightedEnd",motionArgs:{sameLine:!0},context:"visual"},{keys:"d",type:"operator",operator:"delete"},{keys:"y",type:"operator",operator:"yank"},{keys:"c",type:"operator",operator:"change"},{keys:">",type:"operator",operator:"indent",operatorArgs:{indentRight:!0}},{keys:"<",type:"operator",operator:"indent",operatorArgs:{indentRight:!1}},{keys:"g~",type:"operator",operator:"changeCase"},{keys:"gu",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},isEdit:!0},{keys:"gU",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},isEdit:!0},{keys:"n",type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:!0}},{keys:"N",type:"motion",motion:"findNext",motionArgs:{forward:!1,toJumplist:!0}},{keys:"x",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!0},operatorMotionArgs:{visualLine:!1}},{keys:"X",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!1},operatorMotionArgs:{visualLine:!0}},{keys:"D",type:"operatorMotion",operator:"delete",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"D",type:"operator",operator:"delete",operatorArgs:{linewise:!0},context:"visual"},{keys:"Y",type:"operatorMotion",operator:"yank",motion:"expandToLine",motionArgs:{linewise:!0},context:"normal"},{keys:"Y",type:"operator",operator:"yank",operatorArgs:{linewise:!0},context:"visual"},{keys:"C",type:"operatorMotion",operator:"change",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"C",type:"operator",operator:"change",operatorArgs:{linewise:!0},context:"visual"},{keys:"~",type:"operatorMotion",operator:"changeCase",motion:"moveByCharacters",motionArgs:{forward:!0},operatorArgs:{shouldMoveCursor:!0},context:"normal"},{keys:"~",type:"operator",operator:"changeCase",context:"visual"},{keys:"",type:"operatorMotion",operator:"delete",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1},context:"insert"},{keys:"",type:"action",action:"jumpListWalk",actionArgs:{forward:!0}},{keys:"",type:"action",action:"jumpListWalk",actionArgs:{forward:!1}},{keys:"",type:"action",action:"scroll",actionArgs:{forward:!0,linewise:!0}},{keys:"",type:"action",action:"scroll",actionArgs:{forward:!1,linewise:!0}},{keys:"a",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"charAfter"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"eol"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"endOfSelectedArea"},context:"visual"},{keys:"i",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"inplace"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"firstNonBlank"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"startOfSelectedArea"},context:"visual"},{keys:"o",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!0},context:"normal"},{keys:"O",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!1},context:"normal"},{keys:"v",type:"action",action:"toggleVisualMode"},{keys:"V",type:"action",action:"toggleVisualMode",actionArgs:{linewise:!0}},{keys:"",type:"action",action:"toggleVisualMode",actionArgs:{blockwise:!0}},{keys:"",type:"action",action:"toggleVisualMode",actionArgs:{blockwise:!0}},{keys:"gv",type:"action",action:"reselectLastSelection"},{keys:"J",type:"action",action:"joinLines",isEdit:!0},{keys:"p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0}},{keys:"P",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0}},{keys:"r",type:"action",action:"replace",isEdit:!0},{keys:"@",type:"action",action:"replayMacro"},{keys:"q",type:"action",action:"enterMacroRecordMode"},{keys:"R",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{replace:!0}},{keys:"u",type:"action",action:"undo",context:"normal"},{keys:"u",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},context:"visual",isEdit:!0},{keys:"U",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},context:"visual",isEdit:!0},{keys:"",type:"action",action:"redo"},{keys:"m",type:"action",action:"setMark"},{keys:'"',type:"action",action:"setRegister"},{keys:"zz",type:"action",action:"scrollToCursor",actionArgs:{position:"center"}},{keys:"z.",type:"action",action:"scrollToCursor",actionArgs:{position:"center"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"zt",type:"action",action:"scrollToCursor",actionArgs:{position:"top"}},{keys:"z",type:"action",action:"scrollToCursor",actionArgs:{position:"top"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"z-",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"}},{keys:"zb",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:".",type:"action",action:"repeatLastEdit"},{keys:"",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!0,backtrack:!1}},{keys:"",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!1,backtrack:!1}},{keys:"",type:"action",action:"indent",actionArgs:{indentRight:!0},context:"insert"},{keys:"",type:"action",action:"indent",actionArgs:{indentRight:!1},context:"insert"},{keys:"a",type:"motion",motion:"textObjectManipulation"},{keys:"i",type:"motion",motion:"textObjectManipulation",motionArgs:{textObjectInner:!0}},{keys:"/",type:"search",searchArgs:{forward:!0,querySrc:"prompt",toJumplist:!0}},{keys:"?",type:"search",searchArgs:{forward:!1,querySrc:"prompt",toJumplist:!0}},{keys:"*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"g*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:"g#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:":",type:"ex"}],c=[{name:"colorscheme",shortName:"colo"},{name:"map"},{name:"imap",shortName:"im"},{name:"nmap",shortName:"nm"},{name:"vmap",shortName:"vm"},{name:"unmap"},{name:"write",shortName:"w"},{name:"undo",shortName:"u"},{name:"redo",shortName:"red"},{name:"set",shortName:"se"},{name:"set",shortName:"se"},{name:"setlocal",shortName:"setl"},{name:"setglobal",shortName:"setg"},{name:"sort",shortName:"sor"},{name:"substitute",shortName:"s",possiblyAsync:!0},{name:"nohlsearch",shortName:"noh"},{name:"yank",shortName:"y"},{name:"delmarks",shortName:"delm"},{name:"registers",shortName:"reg",excludeFromCommandHistory:!0},{name:"global",shortName:"g"}],d=a.Pos,e=function(){function e(b){b.setOption("disableInput",!0),b.setOption("showCursorWhenSelecting",!1),a.signal(b,"vim-mode-change",{mode:"normal"}),b.on("cursorActivity",bb),x(b),a.on(b.getInputField(),"paste",k(b))}function f(b){b.setOption("disableInput",!1),b.off("cursorActivity",bb),a.off(b.getInputField(),"paste",k(b)),b.state.vim=null}function g(b,c){this==a.keyMap.vim&&a.rmClass(b.getWrapperElement(),"cm-fat-cursor"),c&&c.attach==h||f(b)}function h(b,c){this==a.keyMap.vim&&a.addClass(b.getWrapperElement(),"cm-fat-cursor"),c&&c.attach==h||e(b)}function i(b,c){if(c){if(this[b])return this[b];var d=j(b);if(!d)return!1;var e=a.Vim.findKey(c,d);return"function"==typeof e&&a.signal(c,"vim-keypress",d),e}}function j(a){if("'"==a.charAt(0))return a.charAt(1);var b=a.split(/-(?!$)/),c=b[b.length-1];if(1==b.length&&1==b[0].length)return!1;if(2==b.length&&"Shift"==b[0]&&1==c.length)return!1;for(var d=!1,e=0;e")}function k(a){var b=a.state.vim;return b.onPasteFn||(b.onPasteFn=function(){b.insertMode||(a.setCursor(L(a.getCursor(),0,1)),Bb.enterInsertMode(a,{},b))}),b.onPasteFn}function l(a,b){for(var c=[],d=a;d=a.firstLine()&&b<=a.lastLine()}function n(a){return/^[a-z]$/.test(a)}function o(a){return"()[]{}".indexOf(a)!=-1}function p(a){return kb.test(a)}function q(a){return/^[A-Z]$/.test(a)}function r(a){return/^\s*$/.test(a)}function s(a,b){for(var c=0;c"==b.slice(-11)){var c=b.length-11,d=a.slice(0,c),e=b.slice(0,c);return d==e&&a.length>c?"full":0==e.indexOf(d)&&"partial"}return a==b?"full":0==b.indexOf(a)&&"partial"}function P(a){var b=/^.*(<[^>]+>)$/.exec(a),c=b?b[1]:a.slice(-1);if(c.length>1)switch(c){case"":c="\n";break;case"":c=" ";break;default:c=""}return c}function Q(a,b,c){return function(){for(var d=0;d2&&(b=U.apply(void 0,Array.prototype.slice.call(arguments,1))),T(a,b)?a:b}function V(a,b){return arguments.length>2&&(b=V.apply(void 0,Array.prototype.slice.call(arguments,1))),T(a,b)?b:a}function W(a,b,c){var d=T(a,b),e=T(b,c);return d&&e}function X(a,b){return a.getLine(b).length}function Y(a){return a.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}function Z(a){return a.replace(/([.?*+$\[\]\/\\(){}|\-])/g,"\\$1")}function $(a,b,c){var e=X(a,b),f=new Array(c-e+1).join(" ");a.setCursor(d(b,e)),a.replaceRange(f,a.getCursor())}function _(a,b){var c=[],e=a.listSelections(),f=R(a.clipPos(b)),g=!S(b,f),h=a.getCursor("head"),i=ba(e,h),j=S(e[i].head,e[i].anchor),k=e.length-1,l=k-i>i?k:0,m=e[l].anchor,n=Math.min(m.line,f.line),o=Math.max(m.line,f.line),p=m.ch,q=f.ch,r=e[l].head.ch-p,s=q-p;r>0&&s<=0?(p++,g||q--):r<0&&s>=0?(p--,j||q++):r<0&&s==-1&&(p--,q++);for(var t=n;t<=o;t++){var u={anchor:new d(t,p),head:new d(t,q)};c.push(u)}return a.setSelections(c),b.ch=q,m.ch=p,m}function aa(a,b,c){for(var d=[],e=0;ej&&(f.line=j),f.ch=X(a,f.line)}return{ranges:[{anchor:g,head:f}],primary:0}}if("block"==c){for(var k=Math.min(g.line,f.line),l=Math.min(g.ch,f.ch),m=Math.max(g.line,f.line),n=Math.max(g.ch,f.ch)+1,o=m-k+1,p=f.line==k?0:o-1,q=[],r=0;r0&&f&&r(f);f=e.pop())c.line--,c.ch=0;f?(c.line--,c.ch=X(a,c.line)):c.ch=0}}function ka(a,b,c){b.ch=0,c.ch=0,c.line++}function la(a){if(!a)return 0;var b=a.search(/\S/);return b==-1?a.length:b}function ma(a,b,c,e,f){for(var g=ha(a),h=a.getLine(g.line),i=g.ch,j=f?lb[0]:mb[0];!j(h.charAt(i));)if(i++,i>=h.length)return null;e?j=mb[0]:(j=lb[0],j(h.charAt(i))||(j=lb[1]));for(var k=i,l=i;j(h.charAt(k))&&k=0;)l--;if(l++,b){for(var m=k;/\s/.test(h.charAt(k))&&k0;)l--;l||(l=n)}}return{start:d(g.line,l),end:d(g.line,k)}}function na(a,b,c){S(b,c)||vb.jumpList.add(a,b,c)}function oa(a,b){vb.lastCharacterSearch.increment=a,vb.lastCharacterSearch.forward=b.forward,vb.lastCharacterSearch.selectedCharacter=b.selectedCharacter}function pa(a,b,c,e){var f=R(a.getCursor()),g=c?1:-1,h=c?a.lineCount():-1,i=f.ch,j=f.line,k=a.getLine(j),l={lineText:k,nextCh:k.charAt(i),lastCh:null,index:i,symb:e,reverseSymb:(c?{")":"(","}":"{"}:{"(":")","{":"}"})[e],forward:c,depth:0,curMoveThrough:!1},m=Cb[e];if(!m)return f;var n=Db[m].init,o=Db[m].isComplete;for(n&&n(l);j!==h&&b;){if(l.index+=g,l.nextCh=l.lineText.charAt(l.index),!l.nextCh){if(j+=g,l.lineText=a.getLine(j)||"",g>0)l.index=0;else{var p=l.lineText.length;l.index=p>0?p-1:0}l.nextCh=l.lineText.charAt(l.index)}o(l)&&(f.line=j,f.ch=l.index,b--)}return l.nextCh||l.curMoveThrough?d(j,l.index):f}function qa(a,b,c,d,e){var f=b.line,g=b.ch,h=a.getLine(f),i=c?1:-1,j=d?mb:lb;if(e&&""==h){if(f+=i,h=a.getLine(f),!m(a,f))return null;g=c?0:h.length}for(;;){if(e&&""==h)return{from:0,to:0,line:f};for(var k=i>0?h.length:-1,l=k,n=k;g!=k;){for(var o=!1,p=0;p0?0:h.length}}function ra(a,b,c,e,f,g){var h=R(b),i=[];(e&&!f||!e&&f)&&c++;for(var j=!(e&&f),k=0;k0;)h(n,e)&&c--,n+=e;return new d(n,0)}var o=a.state.vim;if(o.visualLine&&h(k,1,!0)){var p=o.sel.anchor;h(p.line,-1,!0)&&(f&&p.line==k||(k+=1))}var q=g(k);for(n=k;n<=m&&c;n++)h(n,1,!0)&&(f&&g(n)==q||c--);for(j=new d(n,0),n>m&&!q?q=!0:f=!1,n=k;n>l&&(f&&g(n)!=q&&n!=k||!h(n,-1,!0));n--);return i=new d(n,0),{start:i,end:j}}function xa(a,b,c,e){var f,g,h=b,i={"(":/[()]/,")":/[()]/,"[":/[[\]]/,"]":/[[\]]/,"{":/[{}]/,"}":/[{}]/}[c],j={"(":"(",")":"(","[":"[","]":"[","{":"{","}":"{"}[c],k=a.getLine(h.line).charAt(h.ch),l=k===j?1:0;if(f=a.scanForBracket(d(h.line,h.ch+l),-1,null,{bracketRegex:i}),g=a.scanForBracket(d(h.line,h.ch+l),1,null,{bracketRegex:i}),!f||!g)return{start:h,end:h};if(f=f.pos,g=g.pos,f.line==g.line&&f.ch>g.ch||f.line>g.line){var m=f;f=g,g=m}return e?g.ch+=1:f.ch+=1,{start:f,end:g}}function ya(a,b,c,e){var f,g,h,i,j=R(b),k=a.getLine(j.line),l=k.split(""),m=l.indexOf(c);if(j.ch-1&&!f;h--)l[h]==c&&(f=h+1);else f=j.ch+1;if(f&&!g)for(h=f,i=l.length;h'+b+"",{bottom:!0,duration:5e3}):alert(b)}function Ja(a,b){var c=''+(a||"")+'';return b&&(c+=' '+b+""),c}function Ka(a,b){var c=(b.prefix||"")+" "+(b.desc||""),d=Ja(b.prefix,b.desc);Ba(a,d,c,b.onClose,b)}function La(a,b){if(a instanceof RegExp&&b instanceof RegExp){for(var c=["global","multiline","ignoreCase","source"],d=0;d=b&&a<=c:a==b}function Sa(a){var b=a.getScrollInfo(),c=6,d=10,e=a.coordsChar({left:0,top:c+b.top},"local"),f=b.clientHeight-d+b.top,g=a.coordsChar({left:0,top:f},"local");return{top:e.line,bottom:g.line}}function Ta(a,b,c){if("'"==c){var d=a.doc.history.done,e=d[d.length-2];return e&&e.ranges&&e.ranges[0].head}var f=b.marks[c];return f&&f.find()}function Ua(b,c,d,e,f,g,h,i,j){function k(){b.operation(function(){for(;!p;)l(),m();n()})}function l(){var a=b.getRange(g.from(),g.to()),c=a.replace(h,i);g.replace(c)}function m(){for(;g.findNext()&&Ra(g.from(),e,f);)if(d||!q||g.from().line!=q.line)return b.scrollIntoView(g.from(),30),b.setSelection(g.from(),g.to()),q=g.from(),void(p=!1);p=!0}function n(a){if(a&&a(),b.focus(),q){b.setCursor(q);var c=b.state.vim;c.exMode=!1,c.lastHPos=c.lastHSPos=q.ch}j&&j()}function o(c,d,e){a.e_stop(c);var f=a.keyName(c);switch(f){case"Y":l(),m();break;case"N":m();break;case"A":var g=j;j=void 0,b.operation(k),j=g;break;case"L":l();case"Q":case"Esc":case"Ctrl-C":case"Ctrl-[":n(e)}return p&&n(e),!0}b.state.vim.exMode=!0;var p=!1,q=g.from();return m(),p?void Ia(b,"No matches for "+h.source):c?void Ka(b,{prefix:"replace with "+i+" (y/n/a/q/l)",onKeyDown:o}):(k(),void(j&&j()))}function Va(b){var c=b.state.vim,d=vb.macroModeState,e=vb.registerController.getRegister("."),f=d.isPlaying,g=d.lastInsertModeChanges,h=[];if(!f){for(var i=g.inVisualBlock?c.lastSelection.visualBlock.height:1,j=g.changes,h=[],k=0;k1&&(gb(b,c,c.insertModeRepeat-1,!0),c.lastEditInputState.repeatOverride=c.insertModeRepeat),delete c.insertModeRepeat,c.insertMode=!1,b.setCursor(b.getCursor().line,b.getCursor().ch-1),b.setOption("keyMap","vim"),b.setOption("disableInput",!0),b.toggleOverwrite(!1),e.setText(g.changes.join("")),a.signal(b,"vim-mode-change",{mode:"normal"}),d.isRecording&&$a(d)}function Wa(a){b.unshift(a)}function Xa(a,b,c,d,e){var f={keys:a,type:b};f[b]=c,f[b+"Args"]=d;for(var g in e)f[g]=e[g];Wa(f)}function Ya(b,c,d,e){var f=vb.registerController.getRegister(e);if(":"==e)return f.keyBuffer[0]&&Jb.processCommand(b,f.keyBuffer[0]),void(d.isPlaying=!1);var g=f.keyBuffer,h=0;d.isPlaying=!0,d.replaySearchQueries=f.searchQueries.slice(0);for(var i=0;i|<\w+>|./.exec(l),k=j[0],l=l.substring(j.index+k.length),a.Vim.handleKey(b,k,"macro"),c.insertMode){var m=f.insertModeChanges[h++].changes;vb.macroModeState.lastInsertModeChanges.changes=m,hb(b,m,1),Va(b)}d.isPlaying=!1}function Za(a,b){if(!a.isPlaying){var c=a.latestRegister,d=vb.registerController.getRegister(c);d&&d.pushText(b)}}function $a(a){if(!a.isPlaying){var b=a.latestRegister,c=vb.registerController.getRegister(b);c&&c.pushInsertModeChanges&&c.pushInsertModeChanges(a.lastInsertModeChanges)}}function _a(a,b){if(!a.isPlaying){var c=a.latestRegister,d=vb.registerController.getRegister(c);d&&d.pushSearchQuery&&d.pushSearchQuery(b)}}function ab(a,b){var c=vb.macroModeState,d=c.lastInsertModeChanges;if(!c.isPlaying)for(;b;){if(d.expectCursorActivityForChange=!0,"+input"==b.origin||"paste"==b.origin||void 0===b.origin){var e=b.text.join("\n");d.maybeReset&&(d.changes=[],d.maybeReset=!1),a.state.overwrite&&!/\n/.test(e)?d.changes.push([e]):d.changes.push(e)}b=b.next}}function bb(a){var b=a.state.vim;if(b.insertMode){var c=vb.macroModeState;if(c.isPlaying)return;var d=c.lastInsertModeChanges;d.expectCursorActivityForChange?d.expectCursorActivityForChange=!1:d.maybeReset=!0}else a.curOp.isVimOp||db(a,b);b.visualMode&&cb(a)}function cb(a){var b=a.state.vim,c=J(a,R(b.sel.head)),d=L(c,0,1);b.fakeCursor&&b.fakeCursor.clear(),b.fakeCursor=a.markText(c,d,{className:"cm-animate-fat-cursor"})}function db(b,c){var d=b.getCursor("anchor"),e=b.getCursor("head");if(c.visualMode&&!b.somethingSelected()?ia(b,!1):c.visualMode||c.insertMode||!b.somethingSelected()||(c.visualMode=!0,c.visualLine=!1,a.signal(b,"vim-mode-change",{mode:"visual"})),c.visualMode){var f=T(e,d)?0:-1,g=T(e,d)?-1:0;e=L(e,0,f),d=L(d,0,g),c.sel={anchor:d,head:e},ua(b,c,"<",U(e,d)),ua(b,c,">",V(e,d))}else c.insertMode||(c.lastHPos=b.getCursor().ch)}function eb(a){this.keyName=a}function fb(b){function c(){return e.maybeReset&&(e.changes=[],e.maybeReset=!1),e.changes.push(new eb(f)),!0}var d=vb.macroModeState,e=d.lastInsertModeChanges,f=a.keyName(b);f&&(f.indexOf("Delete")==-1&&f.indexOf("Backspace")==-1||a.lookupKey(f,"vim-insert",c))}function gb(a,b,c,d){function e(){h?yb.processAction(a,b,b.lastEditActionCommand):yb.evalInput(a,b)}function f(c){if(g.lastInsertModeChanges.changes.length>0){c=b.lastEditActionCommand?c:1;var d=g.lastInsertModeChanges;hb(a,d.changes,c)}}var g=vb.macroModeState;g.isPlaying=!0;var h=!!b.lastEditActionCommand,i=b.inputState;if(b.inputState=b.lastEditInputState,h&&b.lastEditActionCommand.interlaceInsertRepeat)for(var j=0;j"]),rb=[].concat(nb,ob,pb,["-",'"',".",":","/"]),sb={};t("filetype",void 0,"string",["ft"],function(a,b){if(void 0!==b){if(void 0===a){var c=b.getOption("mode");return"null"==c?"":c}var c=""==a?"null":a;b.setOption("mode",c)}});var tb=function(){function a(a,b,h){function i(b){var e=++d%c,f=g[e];f&&f.clear(),g[e]=a.setBookmark(b)}var j=d%c,k=g[j];if(k){var l=k.find();l&&!S(l,b)&&i(b)}else i(b);i(h),e=d,f=d-c+1,f<0&&(f=0)}function b(a,b){d+=b,d>e?d=e:d0?1:-1,k=a.getCursor();do if(d+=j,h=g[(c+d)%c],h&&(i=h.find())&&!S(k,i))break;while(df)}return h}var c=100,d=-1,e=0,f=0,g=new Array(c);return{cachedCursor:void 0,add:a,move:b}},ub=function(a){return a?{changes:a.changes,expectCursorActivityForChange:a.expectCursorActivityForChange}:{changes:[],expectCursorActivityForChange:!1}};w.prototype={exitMacroRecordMode:function(){var a=vb.macroModeState;a.onRecordingDone&&a.onRecordingDone(),a.onRecordingDone=void 0,a.isRecording=!1},enterMacroRecordMode:function(a,b){var c=vb.registerController.getRegister(b);c&&(c.clear(),this.latestRegister=b,a.openDialog&&(this.onRecordingDone=a.openDialog("(recording)["+b+"]",null,{bottom:!0})),this.isRecording=!0)}};var vb,wb,xb={buildKeyMap:function(){},getRegisterController:function(){return vb.registerController},resetVimGlobalState_:y,getVimGlobalState_:function(){return vb},maybeInitVimState_:x,suppressErrorLogging:!1,InsertModeKey:eb,map:function(a,b,c){Jb.map(a,b,c)},unmap:function(a,b){Jb.unmap(a,b)},setOption:u,getOption:v,defineOption:t,defineEx:function(a,b,c){if(b){if(0!==a.indexOf(b))throw new Error('(Vim.defineEx) "'+b+'" is not a prefix of "'+a+'", command not registered')}else b=a;Ib[a]=c,Jb.commandMap_[b]={name:a,shortName:b,type:"api"}},handleKey:function(a,b,c){var d=this.findKey(a,b,c);if("function"==typeof d)return d()},findKey:function(c,d,e){function f(){var a=vb.macroModeState;if(a.isRecording){if("q"==d)return a.exitMacroRecordMode(),A(c),!0;"mapping"!=e&&Za(a,d)}}function g(){if(""==d)return A(c),l.visualMode?ia(c):l.insertMode&&Va(c),!0}function h(b){for(var e;b;)e=/<\w+-.+?>|<\w+>|./.exec(b),d=e[0],b=b.substring(e.index+d.length),a.Vim.handleKey(c,d,"mapping")}function i(){if(g())return!0;for(var a=l.inputState.keyBuffer=l.inputState.keyBuffer+d,e=1==d.length,f=yb.matchCommand(a,b,l.inputState,"insert");a.length>1&&"full"!=f.type;){var a=l.inputState.keyBuffer=a.slice(1),h=yb.matchCommand(a,b,l.inputState,"insert");"none"!=h.type&&(f=h)}if("none"==f.type)return A(c),!1;if("partial"==f.type)return wb&&window.clearTimeout(wb),wb=window.setTimeout(function(){l.insertMode&&l.inputState.keyBuffer&&A(c)},v("insertModeEscKeysTimeout")),!e;if(wb&&window.clearTimeout(wb),e){for(var i=c.listSelections(),j=0;j0||this.motionRepeat.length>0)&&(a=1,this.prefixRepeat.length>0&&(a*=parseInt(this.prefixRepeat.join(""),10)),this.motionRepeat.length>0&&(a*=parseInt(this.motionRepeat.join(""),10))),a},B.prototype={setText:function(a,b,c){this.keyBuffer=[a||""],this.linewise=!!b,this.blockwise=!!c},pushText:function(a,b){b&&(this.linewise||this.keyBuffer.push("\n"),this.linewise=!0),this.keyBuffer.push(a)},pushInsertModeChanges:function(a){this.insertModeChanges.push(ub(a))},pushSearchQuery:function(a){this.searchQueries.push(a)},clear:function(){this.keyBuffer=[],this.insertModeChanges=[],this.searchQueries=[],this.linewise=!1},toString:function(){return this.keyBuffer.join("")}},D.prototype={pushText:function(a,b,c,d,e){d&&"\n"!==c.charAt(c.length-1)&&(c+="\n");var f=this.isValidRegister(a)?this.getRegister(a):null;if(!f){switch(b){case"yank":this.registers[0]=new B(c,d,e);break;case"delete":case"change":c.indexOf("\n")==-1?this.registers["-"]=new B(c,d):(this.shiftNumericRegisters_(),this.registers[1]=new B(c,d))}return void this.unnamedRegister.setText(c,d,e)}var g=q(a);g?f.pushText(c,d):f.setText(c,d,e),this.unnamedRegister.setText(f.toString(),d)},getRegister:function(a){return this.isValidRegister(a)?(a=a.toLowerCase(),this.registers[a]||(this.registers[a]=new B),this.registers[a]):this.unnamedRegister},isValidRegister:function(a){return a&&s(a,rb)},shiftNumericRegisters_:function(){for(var a=9;a>=2;a--)this.registers[a]=this.getRegister(""+(a-1))}},E.prototype={nextMatch:function(a,b){var c=this.historyBuffer,d=b?-1:1;null===this.initialPrefix&&(this.initialPrefix=a);for(var e=this.iterator+d;b?e>=0:e=c.length?(this.iterator=c.length,this.initialPrefix):e<0?a:void 0},pushInput:function(a){var b=this.historyBuffer.indexOf(a);b>-1&&this.historyBuffer.splice(b,1),a.length&&this.historyBuffer.push(a)},reset:function(){this.initialPrefix=null,this.iterator=this.historyBuffer.length}};var yb={matchCommand:function(a,b,c,d){var e=N(a,b,d,c);if(!e.full&&!e.partial)return{type:"none"};if(!e.full&&e.partial)return{type:"partial"};for(var f,g=0;g"==f.keys.slice(-11)){var i=P(a);if(!i)return{type:"none"};c.selectedCharacter=i}return{type:"full",command:f}},processCommand:function(a,b,c){switch(b.inputState.repeatOverride=c.repeatOverride,c.type){case"motion":this.processMotion(a,b,c);break;case"operator":this.processOperator(a,b,c);break;case"operatorMotion":this.processOperatorMotion(a,b,c);break;case"action":this.processAction(a,b,c);break;case"search":this.processSearch(a,b,c);break;case"ex":case"keyToEx":this.processEx(a,b,c)}},processMotion:function(a,b,c){b.inputState.motion=c.motion,b.inputState.motionArgs=K(c.motionArgs),this.evalInput(a,b)},processOperator:function(a,b,c){var d=b.inputState;if(d.operator){if(d.operator==c.operator)return d.motion="expandToLine",d.motionArgs={linewise:!0},void this.evalInput(a,b);A(a)}d.operator=c.operator,d.operatorArgs=K(c.operatorArgs),b.visualMode&&this.evalInput(a,b)},processOperatorMotion:function(a,b,c){var d=b.visualMode,e=K(c.operatorMotionArgs);e&&d&&e.visualLine&&(b.visualLine=!0),this.processOperator(a,b,c),d||this.processMotion(a,b,c)},processAction:function(a,b,c){var d=b.inputState,e=d.getRepeat(),f=!!e,g=K(c.actionArgs)||{};d.selectedCharacter&&(g.selectedCharacter=d.selectedCharacter),c.operator&&this.processOperator(a,b,c),c.motion&&this.processMotion(a,b,c),(c.motion||c.operator)&&this.evalInput(a,b),g.repeat=e||1,g.repeatIsExplicit=f,g.registerName=d.registerName,A(a),b.lastMotion=null,c.isEdit&&this.recordLastEdit(b,d,c),Bb[c.action](a,g,b)},processSearch:function(b,c,d){function e(a,e,f){vb.searchHistoryController.pushInput(a),vb.searchHistoryController.reset();try{Ma(b,a,e,f)}catch(g){return Ia(b,"Invalid regex: "+a),void A(b)}yb.processMotion(b,c,{type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:d.searchArgs.toJumplist}})}function f(a){b.scrollTo(m.left,m.top),e(a,!0,!0);var c=vb.macroModeState;c.isRecording&&_a(c,a)}function g(c,d,e){var f,g,h=a.keyName(c);"Up"==h||"Down"==h?(f="Up"==h,g=c.target?c.target.selectionEnd:0,d=vb.searchHistoryController.nextMatch(d,f)||"",e(d),g&&c.target&&(c.target.selectionEnd=c.target.selectionStart=Math.min(g,c.target.value.length))):"Left"!=h&&"Right"!=h&&"Ctrl"!=h&&"Alt"!=h&&"Shift"!=h&&vb.searchHistoryController.reset();var j;try{j=Ma(b,d,!0,!0)}catch(c){}j?b.scrollIntoView(Pa(b,!i,j),30):(Qa(b),b.scrollTo(m.left,m.top))}function h(c,d,e){var f=a.keyName(c);"Esc"==f||"Ctrl-C"==f||"Ctrl-["==f||"Backspace"==f&&""==d?(vb.searchHistoryController.pushInput(d),vb.searchHistoryController.reset(),Ma(b,l),Qa(b),b.scrollTo(m.left,m.top),a.e_stop(c),A(b),e(),b.focus()):"Up"==f||"Down"==f?a.e_stop(c):"Ctrl-U"==f&&(a.e_stop(c),e(""))}if(b.getSearchCursor){var i=d.searchArgs.forward,j=d.searchArgs.wholeWordOnly;Aa(b).setReversed(!i);var k=i?"/":"?",l=Aa(b).getQuery(),m=b.getScrollInfo();switch(d.searchArgs.querySrc){case"prompt":var n=vb.macroModeState;if(n.isPlaying){var o=n.replaySearchQueries.shift();e(o,!0,!1)}else Ka(b,{onClose:f,prefix:k,desc:Gb,onKeyUp:g,onKeyDown:h});break;case"wordUnderCursor":var p=ma(b,!1,!0,!1,!0),q=!0;if(p||(p=ma(b,!1,!0,!1,!1),q=!1),!p)return;var o=b.getLine(p.start.line).substring(p.start.ch,p.end.ch);o=q&&j?"\\b"+o+"\\b":Z(o),vb.jumpList.cachedCursor=b.getCursor(),b.setCursor(p.start),e(o,!0,!1)}}},processEx:function(b,c,d){function e(a){vb.exCommandHistoryController.pushInput(a),vb.exCommandHistoryController.reset(),Jb.processCommand(b,a)}function f(c,d,e){var f,g,h=a.keyName(c);("Esc"==h||"Ctrl-C"==h||"Ctrl-["==h||"Backspace"==h&&""==d)&&(vb.exCommandHistoryController.pushInput(d),vb.exCommandHistoryController.reset(),a.e_stop(c),A(b),e(),b.focus()),"Up"==h||"Down"==h?(a.e_stop(c),f="Up"==h,g=c.target?c.target.selectionEnd:0,d=vb.exCommandHistoryController.nextMatch(d,f)||"",e(d),g&&c.target&&(c.target.selectionEnd=c.target.selectionStart=Math.min(g,c.target.value.length))):"Ctrl-U"==h?(a.e_stop(c),e("")):"Left"!=h&&"Right"!=h&&"Ctrl"!=h&&"Alt"!=h&&"Shift"!=h&&vb.exCommandHistoryController.reset()}"keyToEx"==d.type?Jb.processCommand(b,d.exArgs.input):c.visualMode?Ka(b,{onClose:e,prefix:":",value:"'<,'>",onKeyDown:f}):Ka(b,{onClose:e,prefix:":",onKeyDown:f})},evalInput:function(a,b){var c,e,f,g=b.inputState,h=g.motion,i=g.motionArgs||{},j=g.operator,k=g.operatorArgs||{},l=g.registerName,m=b.sel,n=R(b.visualMode?J(a,m.head):a.getCursor("head")),o=R(b.visualMode?J(a,m.anchor):a.getCursor("anchor")),p=R(n),q=R(o);if(j&&this.recordLastEdit(b,g),f=void 0!==g.repeatOverride?g.repeatOverride:g.getRepeat(),f>0&&i.explicitRepeat?i.repeatIsExplicit=!0:(i.noRepeat||!i.explicitRepeat&&0===f)&&(f=1,i.repeatIsExplicit=!1),g.selectedCharacter&&(i.selectedCharacter=k.selectedCharacter=g.selectedCharacter),i.repeat=f,A(a),h){var r=zb[h](a,n,i,b);if(b.lastMotion=zb[h],!r)return;if(i.toJumplist){var s=vb.jumpList,t=s.cachedCursor;t?(na(a,t,r),delete s.cachedCursor):na(a,n,r)}r instanceof Array?(e=r[0],c=r[1]):c=r,c||(c=R(n)),b.visualMode?(b.visualBlock&&c.ch===1/0||(c=J(a,c,b.visualBlock)),e&&(e=J(a,e,!0)),e=e||q,m.anchor=e,m.head=c,fa(a),ua(a,b,"<",T(e,c)?e:c),ua(a,b,">",T(e,c)?c:e)):j||(c=J(a,c),a.setCursor(c.line,c.ch))}if(j){if(k.lastSel){e=q;var u=k.lastSel,v=Math.abs(u.head.line-u.anchor.line),w=Math.abs(u.head.ch-u.anchor.ch);c=u.visualLine?d(q.line+v,q.ch):u.visualBlock?d(q.line+v,q.ch+w):u.head.line==u.anchor.line?d(q.line,q.ch+w):d(q.line+v,q.ch),b.visualMode=!0,b.visualLine=u.visualLine,b.visualBlock=u.visualBlock,m=b.sel={anchor:e,head:c},fa(a)}else b.visualMode&&(k.lastSel={anchor:R(m.anchor),head:R(m.head),visualBlock:b.visualBlock,visualLine:b.visualLine});var x,y,z,B,C;if(b.visualMode){if(x=U(m.head,m.anchor),y=V(m.head,m.anchor),z=b.visualLine||k.linewise,B=b.visualBlock?"block":z?"line":"char",C=ga(a,{anchor:x,head:y},B),z){var D=C.ranges;if("block"==B)for(var E=0;Ek&&f.line==k?this.moveToEol(a,b,c,e):(c.toFirstChar&&(g=la(a.getLine(i)),e.lastHPos=g),e.lastHSPos=a.charCoords(d(i,g),"div").left,d(i,g))},moveByDisplayLines:function(a,b,c,e){var f=b;switch(e.lastMotion){case this.moveByDisplayLines:case this.moveByScroll:case this.moveByLines:case this.moveToColumn:case this.moveToEol:break;default:e.lastHSPos=a.charCoords(f,"div").left}var g=c.repeat,h=a.findPosV(f,c.forward?g:-g,"line",e.lastHSPos);if(h.hitSide)if(c.forward)var i=a.charCoords(h,"div"),j={top:i.top+8,left:e.lastHSPos},h=a.coordsChar(j,"div");else{var k=a.charCoords(d(a.firstLine(),0),"div");k.left=e.lastHSPos,h=a.coordsChar(k,"div")}return e.lastHPos=h.ch,h},moveByPage:function(a,b,c){var d=b,e=c.repeat;return a.findPosV(d,c.forward?e:-e,"page")},moveByParagraph:function(a,b,c){var d=c.forward?1:-1;return wa(a,b,c.repeat,d)},moveByScroll:function(a,b,c,d){var e=a.getScrollInfo(),f=null,g=c.repeat;g||(g=e.clientHeight/(2*a.defaultTextHeight()));var h=a.charCoords(b,"local");c.repeat=g;var f=zb.moveByDisplayLines(a,b,c,d);if(!f)return null;var i=a.charCoords(f,"local");return a.scrollTo(null,e.top+i.top-h.top),f},moveByWords:function(a,b,c){return ra(a,b,c.repeat,!!c.forward,!!c.wordEnd,!!c.bigWord)},moveTillCharacter:function(a,b,c){var d=c.repeat,e=sa(a,d,c.forward,c.selectedCharacter),f=c.forward?-1:1;return oa(f,c),e?(e.ch+=f,e):null},moveToCharacter:function(a,b,c){var d=c.repeat;return oa(0,c),sa(a,d,c.forward,c.selectedCharacter)||b},moveToSymbol:function(a,b,c){var d=c.repeat;return pa(a,d,c.forward,c.selectedCharacter)||b},moveToColumn:function(a,b,c,d){var e=c.repeat;return d.lastHPos=e-1,d.lastHSPos=a.charCoords(b,"div").left,ta(a,e)},moveToEol:function(a,b,c,e){var f=b;e.lastHPos=1/0;var g=d(f.line+c.repeat-1,1/0),h=a.clipPos(g);return h.ch--,e.lastHSPos=a.charCoords(h,"div").left,g},moveToFirstNonWhiteSpaceCharacter:function(a,b){var c=b;return d(c.line,la(a.getLine(c.line)))},moveToMatchedSymbol:function(a,b){for(var c,e=b,f=e.line,g=e.ch,h=a.getLine(f);gb.lastLine()&&c.linewise&&!o?b.replaceRange("",n,k):b.replaceRange("",j,k),c.linewise&&(o||(b.setCursor(n),a.commands.newlineAndIndent(b)),j.ch=Number.MAX_VALUE),f=j}vb.registerController.pushText(c.registerName,"change",g,c.linewise,e.length>1),Bb.enterInsertMode(b,{head:f},b.state.vim)},"delete":function(a,b,c){var e,f,g=a.state.vim;if(g.visualBlock){f=a.getSelection();var h=G("",c.length);a.replaceSelections(h),e=c[0].anchor}else{var i=c[0].anchor,j=c[0].head;b.linewise&&j.line!=a.firstLine()&&i.line==a.lastLine()&&i.line==j.line-1&&(i.line==a.firstLine()?i.ch=0:i=d(i.line-1,X(a,i.line-1))),f=a.getRange(i,j),a.replaceRange("",i,j),e=i,b.linewise&&(e=zb.moveToFirstNonWhiteSpaceCharacter(a,i))}return vb.registerController.pushText(b.registerName,"delete",f,b.linewise,g.visualBlock),J(a,e)},indent:function(a,b,c){var d=a.state.vim,e=c[0].anchor.line,f=d.visualBlock?c[c.length-1].anchor.line:c[0].head.line,g=d.visualMode?b.repeat:1;b.linewise&&f--;for(var h=e;h<=f;h++)for(var i=0;ij.top?(i.line+=(h-j.top)/e,i.line=Math.ceil(i.line),a.setCursor(i),j=a.charCoords(i,"local"),a.scrollTo(null,j.top)):a.scrollTo(null,h);else{var k=h+a.getScrollInfo().clientHeight;k=g.anchor.line?L(g.head,0,1):d(g.anchor.line,0);else if("inplace"==f&&e.visualMode)return;b.setOption("disableInput",!1),c&&c.replace?(b.toggleOverwrite(!0),b.setOption("keyMap","vim-replace"),a.signal(b,"vim-mode-change",{mode:"replace"})):(b.toggleOverwrite(!1),b.setOption("keyMap","vim-insert"),a.signal(b,"vim-mode-change",{mode:"insert"})),vb.macroModeState.isPlaying||(b.on("change",ab),a.on(b.getInputField(),"keydown",fb)),e.visualMode&&ia(b),aa(b,h,i)}},toggleVisualMode:function(b,c,e){var f,g=c.repeat,h=b.getCursor();e.visualMode?e.visualLine^c.linewise||e.visualBlock^c.blockwise?(e.visualLine=!!c.linewise,e.visualBlock=!!c.blockwise,a.signal(b,"vim-mode-change",{mode:"visual",subMode:e.visualLine?"linewise":e.visualBlock?"blockwise":""}),fa(b)):ia(b):(e.visualMode=!0,e.visualLine=!!c.linewise,e.visualBlock=!!c.blockwise,f=J(b,d(h.line,h.ch+g-1),!0),e.sel={anchor:h,head:f},a.signal(b,"vim-mode-change",{mode:"visual",subMode:e.visualLine?"linewise":e.visualBlock?"blockwise":""}),fa(b),ua(b,e,"<",U(h,f)),ua(b,e,">",V(h,f)))},reselectLastSelection:function(b,c,d){var e=d.lastSelection;if(d.visualMode&&da(b,d),e){var f=e.anchorMark.find(),g=e.headMark.find();if(!f||!g)return;d.sel={anchor:f,head:g},d.visualMode=!0,d.visualLine=e.visualLine,d.visualBlock=e.visualBlock,fa(b),ua(b,d,"<",U(f,g)),ua(b,d,">",V(f,g)),a.signal(b,"vim-mode-change",{mode:"visual",subMode:d.visualLine?"linewise":d.visualBlock?"blockwise":""})}},joinLines:function(a,b,c){var e,f;if(c.visualMode){if(e=a.getCursor("anchor"),f=a.getCursor("head"),T(f,e)){var g=f;f=e,e=g}f.ch=X(a,f.line)-1}else{var h=Math.max(b.repeat,2);e=a.getCursor(),f=J(a,d(e.line+h-1,1/0))}for(var i=0,j=e.line;j1)var g=Array(b.repeat+1).join(g);var o=f.linewise,p=f.blockwise;if(o)c.visualMode?g=c.visualLine?g.slice(0,-1):"\n"+g.slice(0,g.length-1)+"\n":b.after?(g="\n"+g.slice(0,g.length-1),e.ch=X(a,e.line)):e.ch=0;else{if(p){g=g.split("\n");for(var q=0;qa.lastLine()&&a.replaceRange("\n",d(A,0));var B=X(a,A);Bk.length&&(f=k.length),g=d(i.line,f)}if("\n"==h)e.visualMode||b.replaceRange("",i,g),(a.commands.newlineAndIndentContinueComment||a.commands.newlineAndIndent)(b);else{var l=b.getRange(i,g);if(l=l.replace(/[^\n]/g,h),e.visualBlock){var m=new Array(b.getOption("tabSize")+1).join(" ");l=b.getSelection(),l=l.replace(/\t/g,m).replace(/[^\n]/g,h).split("\n"),b.replaceSelections(l)}else b.replaceRange(l,i,g);e.visualMode?(i=T(j[0].anchor,j[0].head)?j[0].anchor:j[0].head,b.setCursor(i),ia(b,!1)):b.setCursor(L(g,0,-1))}},incrementNumberToken:function(a,b){for(var c,e,f,g,h,i=a.getCursor(),j=a.getLine(i.line),k=/-?\d+/g;null!==(c=k.exec(j))&&(h=c[0],e=c.index,f=e+h.length,!(i.ch=1)return!0}else a.nextCh===a.reverseSymb&&a.depth--;return!1}},section:{init:function(a){a.curMoveThrough=!0,a.symb=(a.forward?"]":"[")===a.symb?"{":"}"},isComplete:function(a){return 0===a.index&&a.nextCh===a.symb}},comment:{isComplete:function(a){var b="*"===a.lastCh&&"/"===a.nextCh;return a.lastCh=a.nextCh,b}},method:{init:function(a){a.symb="m"===a.symb?"{":"}",a.reverseSymb="{"===a.symb?"}":"{"},isComplete:function(a){return a.nextCh===a.symb}},preprocess:{init:function(a){a.index=0},isComplete:function(a){if("#"===a.nextCh){var b=a.lineText.match(/#(\w+)/)[1];if("endif"===b){if(a.forward&&0===a.depth)return!0;a.depth++}else if("if"===b){if(!a.forward&&0===a.depth)return!0;a.depth--}if("else"===b&&0===a.depth)return!0}return!1}}};t("pcre",!0,"boolean"),za.prototype={getQuery:function(){return vb.query},setQuery:function(a){vb.query=a},getOverlay:function(){return this.searchOverlay},setOverlay:function(a){this.searchOverlay=a},isReversed:function(){return vb.isReversed},setReversed:function(a){vb.isReversed=a},getScrollbarAnnotate:function(){return this.annotate},setScrollbarAnnotate:function(a){this.annotate=a}};var Eb={"\\n":"\n","\\r":"\r","\\t":"\t"},Fb={"\\/":"/","\\\\":"\\","\\n":"\n","\\r":"\r","\\t":"\t"},Gb="(Javascript regexp)",Hb=function(){this.buildCommandMap_()};Hb.prototype={processCommand:function(a,b,c){var d=this;a.operation(function(){a.curOp.isVimOp=!0,d._processCommand(a,b,c)})},_processCommand:function(b,c,d){var e=b.state.vim,f=vb.registerController.getRegister(":"),g=f.toString();e.visualMode&&ia(b);var h=new a.StringStream(c);f.setText(c);var i=d||{};i.input=c;try{this.parseInput_(b,h,i)}catch(j){throw Ia(b,j),j}var k,l;if(i.commandName){if(k=this.matchCommand_(i.commandName)){if(l=k.name,k.excludeFromCommandHistory&&f.setText(g),this.parseCommandArgs_(h,i,k),"exToKey"==k.type){for(var m=0;m0;b--){var c=a.substring(0,b);if(this.commandMap_[c]){var d=this.commandMap_[c];if(0===d.name.indexOf(a))return d}}return null},buildCommandMap_:function(){this.commandMap_={};for(var a=0;a
      ";if(c){var f;c=c.join("");for(var g=0;g"}}else for(var f in d){var i=d[f].toString();i.length&&(e+='"'+f+" "+i+"
      ")}Ia(a,e)},sort:function(b,c){function e(){if(c.argString){var b=new a.StringStream(c.argString);if(b.eat("!")&&(h=!0),b.eol())return;if(!b.eatSpace())return"Invalid arguments";var d=b.match(/([dinuox]+)?\s*(\/.+\/)?\s*/);if(!d&&!b.eol())return"Invalid arguments";if(d[1]){i=d[1].indexOf("i")!=-1,j=d[1].indexOf("u")!=-1;var e=d[1].indexOf("d")!=-1||d[1].indexOf("n")!=-1&&1,f=d[1].indexOf("x")!=-1&&1,g=d[1].indexOf("o")!=-1&&1;if(e+f+g>1)return"Invalid arguments";k=e&&"decimal"||f&&"hex"||g&&"octal"}d[2]&&(l=new RegExp(d[2].substr(1,d[2].length-2),i?"i":""))}}function f(a,b){if(h){var c;c=a,a=b,b=c}i&&(a=a.toLowerCase(),b=b.toLowerCase());var d=k&&s.exec(a),e=k&&s.exec(b);return d?(d=parseInt((d[1]+d[2]).toLowerCase(),t),e=parseInt((e[1]+e[2]).toLowerCase(),t),d-e):a")}if(!d)return void Ia(a,l);var o=0,p=function(){if(o=k)return void Ia(b,"Invalid argument: "+c.argString.substring(f));for(var l=0;l<=k-j;l++){var m=String.fromCharCode(j+l);delete d.marks[m]}}else delete d.marks[g]}}},Jb=new Hb;return a.keyMap.vim={attach:h,detach:g,call:i},t("insertModeEscKeysTimeout",200,"number"),a.keyMap["vim-insert"]={fallthrough:["default"],attach:h,detach:g,call:i},a.keyMap["vim-replace"]={Backspace:"goCharLeft",fallthrough:["vim-insert"],attach:h,detach:g,call:i},y(),xb};a.Vim=e()})},{"../addon/dialog/dialog":3,"../addon/edit/matchbrackets.js":12,"../addon/search/searchcursor":49,"../lib/codemirror":59}],59:[function(a,b,c){!function(a,d){"object"==typeof c&&"undefined"!=typeof b?b.exports=d():"function"==typeof define&&define.amd?define(d):a.CodeMirror=d()}(this,function(){"use strict";function a(a){return new RegExp("(^|\\s)"+a+"(?:$|\\s)\\s*")}function b(a){for(var b=a.childNodes.length;b>0;--b)a.removeChild(a.firstChild);return a}function c(a,c){return b(a).appendChild(c)}function d(a,b,c,d){var e=document.createElement(a);if(c&&(e.className=c),d&&(e.style.cssText=d),"string"==typeof b)e.appendChild(document.createTextNode(b));else if(b)for(var f=0;f=b)return g+(b-f);g+=h-f,g+=c-g%c,f=h+1}}function m(a,b){for(var c=0;c=b)return d+Math.min(g,b-e);if(e+=f-d,e+=c-e%c,d=f+1,e>=b)return d}}function o(a){for(;Qg.length<=a;)Qg.push(p(Qg)+" ");return Qg[a]}function p(a){return a[a.length-1]}function q(a,b){for(var c=[],d=0;d"\x80"&&(a.toUpperCase()!=a.toLowerCase()||Rg.test(a))}function v(a,b){return b?!!(b.source.indexOf("\\w")>-1&&u(a))||b.test(a):u(a)}function w(a){for(var b in a)if(a.hasOwnProperty(b)&&a[b])return!1;return!0}function x(a){return a.charCodeAt(0)>=768&&Sg.test(a)}function y(a,b,c){for(;(c<0?b>0:b=a.size)throw new Error("There is no line "+(b+a.first)+" in the document.");for(var c=a;!c.lines;)for(var d=0;;++d){var e=c.children[d],f=e.chunkSize();if(b=a.first&&bc?J(c,B(a,c).text.length):R(b,B(a,b.line).text.length)}function R(a,b){var c=a.ch;return null==c||c>b?J(a.line,b):c<0?J(a.line,0):a}function S(a,b){for(var c=[],d=0;d=b:f.to>b);(d||(d=[])).push(new V(g,f.from,i?null:f.to))}}return d}function $(a,b,c){var d;if(a)for(var e=0;e=b:f.to>b);if(h||f.from==b&&"bookmark"==g.type&&(!c||f.marker.insertLeft)){var i=null==f.from||(g.inclusiveLeft?f.from<=b:f.from0&&h)for(var v=0;v0)){var k=[i,1],l=K(j.from,h.from),n=K(j.to,h.to);(l<0||!g.inclusiveLeft&&!l)&&k.push({from:j.from,to:h.from}),(n>0||!g.inclusiveRight&&!n)&&k.push({from:h.to,to:j.to}),e.splice.apply(e,k),i+=k.length-3}}return e}function ca(a){var b=a.markedSpans;if(b){for(var c=0;c=0&&l<=0||k<=0&&l>=0)&&(k<=0&&(i.marker.inclusiveRight&&e.inclusiveLeft?K(j.to,c)>=0:K(j.to,c)>0)||k>=0&&(i.marker.inclusiveRight&&e.inclusiveLeft?K(j.from,d)<=0:K(j.from,d)<0)))return!0}}}function la(a){for(var b;b=ia(a);)a=b.find(-1,!0).line;return a}function ma(a){for(var b;b=ja(a);)a=b.find(1,!0).line;return a}function na(a){for(var b,c;b=ja(a);)a=b.find(1,!0).line,(c||(c=[])).push(a);return c}function oa(a,b){var c=B(a,b),d=la(c);return c==d?b:F(d)}function pa(a,b){if(b>a.lastLine())return b;var c,d=B(a,b);if(!qa(a,d))return b;for(;c=ja(d);)d=c.find(1,!0).line;return F(d)+1}function qa(a,b){var c=Ug&&b.markedSpans;if(c)for(var d=void 0,e=0;eb.maxLineLength&&(b.maxLineLength=c,b.maxLine=a)})}function va(a,b,c,d){if(!a)return d(b,c,"ltr");for(var e=!1,f=0;fb||b==c&&g.to==b)&&(d(Math.max(g.from,b),Math.min(g.to,c),1==g.level?"rtl":"ltr"),e=!0)}e||d(b,c,"ltr")}function wa(a,b,c){var d;Vg=null;for(var e=0;eb)return e;f.to==b&&(f.from!=f.to&&"before"==c?d=e:Vg=e),f.from==b&&(f.from!=f.to&&"before"!=c?d=e:Vg=e)}return null!=d?d:Vg}function xa(a,b){var c=a.order;return null==c&&(c=a.order=Wg(a.text,b)),c}function ya(a,b,c){var d=y(a.text,b+c,c);return d<0||d>a.text.length?null:d}function za(a,b,c){var d=ya(a,b.ch,c);return null==d?null:new J(b.line,d,c<0?"after":"before")}function Aa(a,b,c,d,e){if(a){var f=xa(c,b.doc.direction);if(f){var g,h=e<0?p(f):f[0],i=e<0==(1==h.level),j=i?"after":"before";if(h.level>0){var k=Zb(b,c);g=e<0?c.text.length-1:0;var l=$b(b,k,g).top;g=z(function(a){return $b(b,k,a).top==l},e<0==(1==h.level)?h.from:h.to-1,g),"before"==j&&(g=ya(c,g,1))}else g=e<0?h.to:h.from;return new J(d,g,j)}}return new J(d,e<0?c.text.length:0,e<0?"before":"after")}function Ba(a,b,c,d){var e=xa(b,a.doc.direction);if(!e)return za(b,c,d);c.ch>=b.text.length?(c.ch=b.text.length,c.sticky="before"):c.ch<=0&&(c.ch=0,c.sticky="after");var f=wa(e,c.ch,c.sticky),g=e[f];if("ltr"==a.doc.direction&&g.level%2==0&&(d>0?g.to>c.ch:g.from=g.from&&m>=k.begin)){var n=l?"before":"after";return new J(c.line,m,n)}}var o=function(a,b,d){for(var f=function(a,b){return b?new J(c.line,i(a,1),"before"):new J(c.line,a,"after")};a>=0&&a0==(1!=g.level),j=h?d.begin:i(d.end,-1);if(g.from<=j&&j0?k.end:i(k.begin,-1);return null==q||d>0&&q==b.text.length||!(p=o(d>0?0:e.length-1,d,j(q)))?null:p}function Ca(a,b){return a._handlers&&a._handlers[b]||Xg}function Da(a,b,c){if(a.removeEventListener)a.removeEventListener(b,c,!1);else if(a.detachEvent)a.detachEvent("on"+b,c);else{var d=a._handlers,e=d&&d[b];if(e){var f=m(e,c);f>-1&&(d[b]=e.slice(0,f).concat(e.slice(f+1)))}}}function Ea(a,b){var c=Ca(a,b);if(c.length)for(var d=Array.prototype.slice.call(arguments,2),e=0;e0}function Ia(a){a.prototype.on=function(a,b){Yg(this,a,b)},a.prototype.off=function(a,b){Da(this,a,b)}}function Ja(a){a.preventDefault?a.preventDefault():a.returnValue=!1}function Ka(a){a.stopPropagation?a.stopPropagation():a.cancelBubble=!0}function La(a){return null!=a.defaultPrevented?a.defaultPrevented:0==a.returnValue}function Ma(a){Ja(a),Ka(a)}function Na(a){return a.target||a.srcElement}function Oa(a){var b=a.which;return null==b&&(1&a.button?b=1:2&a.button?b=3:4&a.button&&(b=2)),zg&&a.ctrlKey&&1==b&&(b=3),b}function Pa(a){if(null==Jg){var b=d("span","\u200b");c(a,d("span",[b,document.createTextNode("x")])),0!=a.firstChild.offsetHeight&&(Jg=b.offsetWidth<=1&&b.offsetHeight>2&&!(ng&&og<8))}var e=Jg?d("span","\u200b"):d("span","\xa0",null,"display: inline-block; width: 1px; margin-right: -1px");return e.setAttribute("cm-text",""),e}function Qa(a){if(null!=Kg)return Kg;var d=c(a,document.createTextNode("A\u062eA")),e=Dg(d,0,1).getBoundingClientRect(),f=Dg(d,1,2).getBoundingClientRect();return b(a),!(!e||e.left==e.right)&&(Kg=f.right-e.right<3)}function Ra(a){if(null!=bh)return bh;var b=c(a,d("span","x")),e=b.getBoundingClientRect(),f=Dg(b,0,1).getBoundingClientRect();return bh=Math.abs(e.left-f.left)>1}function Sa(a,b){arguments.length>2&&(b.dependencies=Array.prototype.slice.call(arguments,2)),ch[a]=b}function Ta(a,b){dh[a]=b}function Ua(a){if("string"==typeof a&&dh.hasOwnProperty(a))a=dh[a];else if(a&&"string"==typeof a.name&&dh.hasOwnProperty(a.name)){var b=dh[a.name];"string"==typeof b&&(b={name:b}),a=t(b,a),a.name=b.name}else{if("string"==typeof a&&/^[\w\-]+\/[\w\-]+\+xml$/.test(a))return Ua("application/xml");if("string"==typeof a&&/^[\w\-]+\/[\w\-]+\+json$/.test(a))return Ua("application/json")}return"string"==typeof a?{name:a}:a||{name:"null"}}function Va(a,b){b=Ua(b);var c=ch[b.name];if(!c)return Va(a,"text/plain");var d=c(a,b);if(eh.hasOwnProperty(b.name)){var e=eh[b.name];for(var f in e)e.hasOwnProperty(f)&&(d.hasOwnProperty(f)&&(d["_"+f]=d[f]),d[f]=e[f])}if(d.name=b.name,b.helperType&&(d.helperType=b.helperType),b.modeProps)for(var g in b.modeProps)d[g]=b.modeProps[g];return d}function Wa(a,b){var c=eh.hasOwnProperty(a)?eh[a]:eh[a]={};k(b,c)}function Xa(a,b){if(b===!0)return b;if(a.copyState)return a.copyState(b);var c={};for(var d in b){var e=b[d];e instanceof Array&&(e=e.concat([])),c[d]=e}return c}function Ya(a,b){for(var c;a.innerMode&&(c=a.innerMode(b),c&&c.mode!=a);)b=c.state,a=c.mode;return c||{mode:a,state:b}}function Za(a,b,c){return!a.startState||a.startState(b,c)}function $a(a,b,c,d){var e=[a.state.modeGen],f={};gb(a,b.text,a.doc.mode,c,function(a,b){return e.push(a,b)},f,d);for(var g=c.state,h=function(d){var g=a.state.overlays[d],h=1,i=0;c.state=!0,gb(a,b.text,g.mode,c,function(a,b){for(var c=h;ia&&e.splice(h,1,a,e[h+1],d),h+=2,i=Math.min(a,d)}if(b)if(g.opaque)e.splice(c,h-c,a,"overlay "+b),h=c+2;else for(;ca.options.maxHighlightLength&&Xa(a.doc.mode,d.state),f=$a(a,b,d);e&&(d.state=e),b.stateAfter=d.save(!e),b.styles=f.styles,f.classes?b.styleClasses=f.classes:b.styleClasses&&(b.styleClasses=null),c===a.doc.highlightFrontier&&(a.doc.modeFrontier=Math.max(a.doc.modeFrontier,++a.doc.highlightFrontier))}return b.styles}function ab(a,b,c){var d=a.doc,e=a.display;if(!d.mode.startState)return new hh(d,!0,b);var f=hb(a,b,c),g=f>d.first&&B(d,f-1).stateAfter,h=g?hh.fromSaved(d,g,f):new hh(d,Za(d.mode),f);return d.iter(f,b,function(c){bb(a,c.text,h);var d=h.line;c.stateAfter=d==b-1||d%5==0||d>=e.viewFrom&&db.start)return f}throw new Error("Mode "+a.name+" failed to advance stream.")}function eb(a,b,c,d){var e,f=a.doc,g=f.mode;b=Q(f,b);var h,i=B(f,b.line),j=ab(a,b.line,c),k=new fh(i.text,a.options.tabSize,j);for(d&&(h=[]);(d||k.posa.options.maxHighlightLength?(h=!1,g&&bb(a,b,d,l.pos),l.pos=b.length,i=null):i=fb(db(c,l,d.state,m),f),m){var n=m[0].name;n&&(i="m-"+(i?n+" "+i:n))}if(!h||k!=i){for(;jg;--h){if(h<=f.first)return f.first;var i=B(f,h-1),j=i.stateAfter;if(j&&(!c||h+(j instanceof gh?j.lookAhead:0)<=f.modeFrontier))return h;var k=l(i.text,null,a.options.tabSize);(null==e||d>k)&&(e=h-1,d=k)}return e}function ib(a,b){if(a.modeFrontier=Math.min(a.modeFrontier,b),!(a.highlightFrontierc;d--){var e=B(a,d).stateAfter;if(e&&(!(e instanceof gh)||d+e.lookAhead1&&!/ /.test(a))return a;for(var c=b,d="",e=0;ej&&l.from<=j));m++);if(l.to>=k)return a(c,d,e,f,g,h,i);a(c,d.slice(0,l.to-j),e,f,null,h,i),f=null,d=d.slice(l.to-j),j=l.to}}}function rb(a,b,c,d){var e=!d&&c.widgetNode;e&&a.map.push(a.pos,a.pos+b,e),!d&&a.cm.display.input.needsContentAttribute&&(e||(e=a.content.appendChild(document.createElement("span"))),e.setAttribute("cm-marker",c.id)),e&&(a.cm.display.input.setUneditable(e),a.content.appendChild(e)),a.pos+=b,a.trailingSpace=!1}function sb(a,b,c){var d=a.markedSpans,e=a.text,f=0;if(d)for(var g,h,i,j,k,l,m,n=e.length,o=0,p=1,q="",r=0;;){if(r==o){i=j=k=l=h="",m=null,r=1/0;for(var s=[],t=void 0,u=0;uo||w.collapsed&&v.to==o&&v.from==o)?(null!=v.to&&v.to!=o&&r>v.to&&(r=v.to,j=""),w.className&&(i+=" "+w.className),w.css&&(h=(h?h+";":"")+w.css),w.startStyle&&v.from==o&&(k+=" "+w.startStyle),w.endStyle&&v.to==r&&(t||(t=[])).push(w.endStyle,v.to),w.title&&!l&&(l=w.title),w.collapsed&&(!m||ga(m.marker,w)<0)&&(m=v)):v.from>o&&r>v.from&&(r=v.from)}if(t)for(var x=0;x=n)break;for(var z=Math.min(n,r);;){if(q){var A=o+q.length;if(!m){var B=A>z?q.slice(0,z-o):q;b.addToken(b,B,g?g+i:i,k,o+B.length==r?j:"",l,h)}if(A>=z){q=q.slice(z-o),o=z;break}o=A,k=""}q=e.slice(f,f=c[p++]),g=lb(c[p++],b.cm.options)}}else for(var C=1;C2&&f.push((i.bottom+j.top)/2-c.top)}}f.push(c.bottom-c.top)}}function Vb(a,b,c){if(a.line==b)return{map:a.measure.map,cache:a.measure.cache};for(var d=0;dc)return{map:a.measure.maps[e],cache:a.measure.caches[e],before:!0}}function Wb(a,b){b=la(b);var d=F(b),e=a.display.externalMeasured=new tb(a.doc,b,d);e.lineN=d;var f=e.built=mb(a,e);return e.text=f.pre,c(a.display.lineMeasure,f.pre),e}function Xb(a,b,c,d){return $b(a,Zb(a,b),c,d)}function Yb(a,b){if(b>=a.display.viewFrom&&b=c.lineN&&bb)&&(f=i-h,e=f-1,b>=i&&(g="right")),null!=e){if(d=a[j+2],h==i&&c==(d.insertLeft?"left":"right")&&(g=c),"left"==c&&0==e)for(;j&&a[j-2]==a[j-3]&&a[j-1].insertLeft;)d=a[(j-=3)+2],g="left";if("right"==c&&e==i-h)for(;j=0&&(c=a[e]).left==c.right;e--);return c}function bc(a,b,c,d){var e,f=_b(b.map,c,d),g=f.node,h=f.start,i=f.end,j=f.collapse;if(3==g.nodeType){for(var k=0;k<4;k++){for(;h&&x(b.line.text.charAt(f.coverStart+h));)--h;for(;f.coverStart+i0&&(j=d="right");var l;e=a.options.lineWrapping&&(l=g.getClientRects()).length>1?l["right"==d?l.length-1:0]:g.getBoundingClientRect()}if(ng&&og<9&&!h&&(!e||!e.left&&!e.right)){var m=g.parentNode.getClientRects()[0];e=m?{left:m.left,right:m.left+tc(a.display),top:m.top,bottom:m.bottom}:ph}for(var n=e.top-b.rect.top,o=e.bottom-b.rect.top,p=(n+o)/2,q=b.view.measure.heights,r=0;r=d.text.length?(j=d.text.length,k="before"):j<=0&&(j=0,k="after"),!i)return g("before"==k?j-1:j,"before"==k);var l=wa(i,j,k),m=Vg,n=h(j,l,"before"==k);return null!=m&&(n.other=h(j,m,"before"!=k)),n}function mc(a,b){var c=0;b=Q(a.doc,b),a.options.lineWrapping||(c=tc(a.display)*b.ch);var d=B(a.doc,b.line),e=sa(d)+Ob(a.display);return{left:c,right:c,top:e,bottom:e+d.height}}function nc(a,b,c,d,e){var f=J(a,b,c);return f.xRel=e,d&&(f.outside=!0),f}function oc(a,b,c){var d=a.doc;if(c+=a.display.viewOffset,c<0)return nc(d.first,0,null,!0,-1);var e=G(d,c),f=d.first+d.size-1;if(e>f)return nc(d.first+d.size-1,B(d,f).text.length,null,!0,1);b<0&&(b=0);for(var g=B(d,e);;){var h=rc(a,g,e,b,c),i=ja(g),j=i&&i.find(0,!0);if(!i||!(h.ch>j.from.ch||h.ch==j.from.ch&&h.xRel>0))return h;e=F(g=j.to.line)}}function pc(a,b,c,d){var e=function(d){return ic(a,b,$b(a,c,d),"line")},f=b.text.length,g=z(function(a){return e(a-1).bottom<=d},f,0);return f=z(function(a){return e(a).top>d},g,f),{begin:g,end:f}}function qc(a,b,c,d){var e=ic(a,b,$b(a,c,d),"line").top;return pc(a,b,c,e)}function rc(a,b,c,d,e){e-=sa(b);var f,g=0,h=b.text.length,i=Zb(a,b),j=xa(b,a.doc.direction);if(j){if(a.options.lineWrapping){var k;k=pc(a,b,i,e),g=k.begin,h=k.end}f=new J(c,Math.floor(g+(h-g)/2));var l,m,n=lc(a,f,"line",b,i).left,o=n1){var t=Math.abs(p-l)/q;q=Math.min(q,Math.ceil(Math.abs(p)/t)),o=p<0?1:-1}}while(0!=p&&(q>1||o<0!=p<0&&Math.abs(p)<=Math.abs(l)));if(Math.abs(p)>Math.abs(l)){if(p<0==l<0)throw new Error("Broke out of infinite loop in coordsCharInner");f=m}}else{var u=z(function(c){var f=ic(a,b,$b(a,i,c),"line");return f.top>e?(h=Math.min(c,h),!0):!(f.bottom<=e)&&(f.left>d||!(f.rightv.right?1:0,f}function sc(a){if(null!=a.cachedTextHeight)return a.cachedTextHeight;if(null==kh){kh=d("pre");for(var e=0;e<49;++e)kh.appendChild(document.createTextNode("x")),kh.appendChild(d("br"));kh.appendChild(document.createTextNode("x"))}c(a.measure,kh);var f=kh.offsetHeight/50;return f>3&&(a.cachedTextHeight=f),b(a.measure),f||1}function tc(a){if(null!=a.cachedCharWidth)return a.cachedCharWidth;var b=d("span","xxxxxxxxxx"),e=d("pre",[b]);c(a.measure,e);var f=b.getBoundingClientRect(),g=(f.right-f.left)/10;return g>2&&(a.cachedCharWidth=g),g||10}function uc(a){for(var b=a.display,c={},d={},e=b.gutters.clientLeft,f=b.gutters.firstChild,g=0;f;f=f.nextSibling,++g)c[a.options.gutters[g]]=f.offsetLeft+f.clientLeft+e,d[a.options.gutters[g]]=f.clientWidth;return{fixedPos:vc(b),gutterTotalWidth:b.gutters.offsetWidth,gutterLeft:c,gutterWidth:d,wrapperWidth:b.wrapper.clientWidth}}function vc(a){return a.scroller.getBoundingClientRect().left-a.sizer.getBoundingClientRect().left}function wc(a){var b=sc(a.display),c=a.options.lineWrapping,d=c&&Math.max(5,a.display.scroller.clientWidth/tc(a.display)-3);return function(e){if(qa(a.doc,e))return 0;var f=0;if(e.widgets)for(var g=0;g=a.display.viewTo)return null;if(b-=a.display.viewFrom,b<0)return null;for(var c=a.display.view,d=0;d=a.display.viewTo||h.to().line0?b.blinker=setInterval(function(){return b.cursorDiv.style.visibility=(c=!c)?"":"hidden"},a.options.cursorBlinkRate):a.options.cursorBlinkRate<0&&(b.cursorDiv.style.visibility="hidden")}}function Gc(a){a.state.focused||(a.display.input.focus(),Ic(a))}function Hc(a){a.state.delayingBlurEvent=!0,setTimeout(function(){a.state.delayingBlurEvent&&(a.state.delayingBlurEvent=!1,Jc(a))},100)}function Ic(a,b){a.state.delayingBlurEvent&&(a.state.delayingBlurEvent=!1),"nocursor"!=a.options.readOnly&&(a.state.focused||(Ea(a,"focus",a,b),a.state.focused=!0,h(a.display.wrapper,"CodeMirror-focused"),a.curOp||a.display.selForContextMenu==a.doc.sel||(a.display.input.reset(),pg&&setTimeout(function(){return a.display.input.reset(!0)},20)),a.display.input.receivedFocus()),Fc(a))}function Jc(a,b){a.state.delayingBlurEvent||(a.state.focused&&(Ea(a,"blur",a,b),a.state.focused=!1,Gg(a.display.wrapper,"CodeMirror-focused")),clearInterval(a.display.blinker),setTimeout(function(){a.state.focused||(a.display.shift=!1)},150))}function Kc(a){for(var b=a.display,c=b.lineDiv.offsetTop,d=0;d.005||i<-.005)&&(E(e.line,f),Lc(e.line),e.rest))for(var j=0;j=g&&(f=G(b,sa(B(b,i))-a.wrapper.clientHeight),g=i)}return{from:f,to:Math.max(g,f+1)}}function Nc(a){var b=a.display,c=b.view;if(b.alignWidgets||b.gutters.firstChild&&a.options.fixedGutter){for(var d=vc(b)-b.scroller.scrollLeft+a.doc.scrollLeft,e=b.gutters.offsetWidth,f=d+"px",g=0;g(window.innerHeight||document.documentElement.clientHeight)&&(f=!1),null!=f&&!vg){var g=d("div","\u200b",null,"position: absolute;\n top: "+(b.top-c.viewOffset-Ob(a.display))+"px;\n height: "+(b.bottom-b.top+Rb(a)+c.barHeight)+"px;\n left: "+b.left+"px; width: "+Math.max(2,b.right-b.left)+"px;");a.display.lineSpace.appendChild(g),g.scrollIntoView(f),a.display.lineSpace.removeChild(g)}}}function Qc(a,b,c,d){null==d&&(d=0);var e;a.options.lineWrapping||b!=c||(b=b.ch?J(b.line,"before"==b.sticky?b.ch-1:b.ch,"after"):b,c="before"==b.sticky?J(b.line,b.ch+1,"before"):b);for(var f=0;f<5;f++){var g=!1,h=lc(a,b),i=c&&c!=b?lc(a,c):h;e={left:Math.min(h.left,i.left),top:Math.min(h.top,i.top)-d,right:Math.max(h.left,i.left),bottom:Math.max(h.bottom,i.bottom)+d};var j=Sc(a,e),k=a.doc.scrollTop,l=a.doc.scrollLeft;if(null!=j.scrollTop&&(Zc(a,j.scrollTop),Math.abs(a.doc.scrollTop-k)>1&&(g=!0)),null!=j.scrollLeft&&(_c(a,j.scrollLeft),Math.abs(a.doc.scrollLeft-l)>1&&(g=!0)),!g)break}return e}function Rc(a,b){var c=Sc(a,b);null!=c.scrollTop&&Zc(a,c.scrollTop),null!=c.scrollLeft&&_c(a,c.scrollLeft)}function Sc(a,b){var c=a.display,d=sc(a.display);b.top<0&&(b.top=0);var e=a.curOp&&null!=a.curOp.scrollTop?a.curOp.scrollTop:c.scroller.scrollTop,f=Tb(a),g={};b.bottom-b.top>f&&(b.bottom=b.top+f);var h=a.doc.height+Pb(c),i=b.toph-d;if(b.tope+f){var k=Math.min(b.top,(j?h:b.bottom)-f);k!=e&&(g.scrollTop=k)}var l=a.curOp&&null!=a.curOp.scrollLeft?a.curOp.scrollLeft:c.scroller.scrollLeft,m=Sb(a)-(a.options.fixedGutter?c.gutters.offsetWidth:0),n=b.right-b.left>m;return n&&(b.right=b.left+m),b.left<10?g.scrollLeft=0:b.leftm+l-3&&(g.scrollLeft=b.right+(n?0:10)-m),g}function Tc(a,b){null!=b&&(Xc(a),a.curOp.scrollTop=(null==a.curOp.scrollTop?a.doc.scrollTop:a.curOp.scrollTop)+b)}function Uc(a){Xc(a);var b=a.getCursor();a.curOp.scrollToPos={from:b,to:b,margin:a.options.cursorScrollMargin}}function Vc(a,b,c){null==b&&null==c||Xc(a),null!=b&&(a.curOp.scrollLeft=b),null!=c&&(a.curOp.scrollTop=c)}function Wc(a,b){Xc(a),a.curOp.scrollToPos=b}function Xc(a){var b=a.curOp.scrollToPos;if(b){a.curOp.scrollToPos=null;var c=mc(a,b.from),d=mc(a,b.to);Yc(a,c,d,b.margin)}}function Yc(a,b,c,d){var e=Sc(a,{left:Math.min(b.left,c.left),top:Math.min(b.top,c.top)-d,right:Math.max(b.right,c.right),bottom:Math.max(b.bottom,c.bottom)+d});Vc(a,e.scrollLeft,e.scrollTop)}function Zc(a,b){Math.abs(a.doc.scrollTop-b)<2||(jg||Dd(a,{top:b}),$c(a,b,!0),jg&&Dd(a),wd(a,100))}function $c(a,b,c){b=Math.min(a.display.scroller.scrollHeight-a.display.scroller.clientHeight,b),(a.display.scroller.scrollTop!=b||c)&&(a.doc.scrollTop=b,a.display.scrollbars.setScrollTop(b),a.display.scroller.scrollTop!=b&&(a.display.scroller.scrollTop=b))}function _c(a,b,c,d){b=Math.min(b,a.display.scroller.scrollWidth-a.display.scroller.clientWidth),(c?b==a.doc.scrollLeft:Math.abs(a.doc.scrollLeft-b)<2)&&!d||(a.doc.scrollLeft=b,Nc(a),a.display.scroller.scrollLeft!=b&&(a.display.scroller.scrollLeft=b),a.display.scrollbars.setScrollLeft(b))}function ad(a){var b=a.display,c=b.gutters.offsetWidth,d=Math.round(a.doc.height+Pb(a.display));return{clientHeight:b.scroller.clientHeight,viewHeight:b.wrapper.clientHeight,scrollWidth:b.scroller.scrollWidth,clientWidth:b.scroller.clientWidth,viewWidth:b.wrapper.clientWidth,barLeft:a.options.fixedGutter?c:0,docHeight:d,scrollHeight:d+Rb(a)+b.barHeight,nativeBarWidth:b.nativeBarWidth,gutterWidth:c}}function bd(a,b){b||(b=ad(a));var c=a.display.barWidth,d=a.display.barHeight;cd(a,b);for(var e=0;e<4&&c!=a.display.barWidth||d!=a.display.barHeight;e++)c!=a.display.barWidth&&a.options.lineWrapping&&Kc(a),cd(a,ad(a)),c=a.display.barWidth,d=a.display.barHeight}function cd(a,b){var c=a.display,d=c.scrollbars.update(b);c.sizer.style.paddingRight=(c.barWidth=d.right)+"px",c.sizer.style.paddingBottom=(c.barHeight=d.bottom)+"px",c.heightForcer.style.borderBottom=d.bottom+"px solid transparent",d.right&&d.bottom?(c.scrollbarFiller.style.display="block",c.scrollbarFiller.style.height=d.bottom+"px",c.scrollbarFiller.style.width=d.right+"px"):c.scrollbarFiller.style.display="",d.bottom&&a.options.coverGutterNextToScrollbar&&a.options.fixedGutter?(c.gutterFiller.style.display="block",c.gutterFiller.style.height=d.bottom+"px",c.gutterFiller.style.width=b.gutterWidth+"px"):c.gutterFiller.style.display=""}function dd(a){a.display.scrollbars&&(a.display.scrollbars.clear(),a.display.scrollbars.addClass&&Gg(a.display.wrapper,a.display.scrollbars.addClass)),a.display.scrollbars=new sh[a.options.scrollbarStyle](function(b){a.display.wrapper.insertBefore(b,a.display.scrollbarFiller),Yg(b,"mousedown",function(){a.state.focused&&setTimeout(function(){return a.display.input.focus()},0)}),b.setAttribute("cm-not-content","true")},function(b,c){"horizontal"==c?_c(a,b):Zc(a,b)},a),a.display.scrollbars.addClass&&h(a.display.wrapper,a.display.scrollbars.addClass)}function ed(a){a.curOp={cm:a,viewChanged:!1,startHeight:a.doc.height,forceUpdate:!1,updateInput:null,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++th},vb(a.curOp)}function fd(a){var b=a.curOp;xb(b,function(a){for(var b=0;b=c.viewTo)||c.maxLineChanged&&b.options.lineWrapping,a.update=a.mustUpdate&&new uh(b,a.mustUpdate&&{top:a.scrollTop,ensure:a.scrollToPos},a.forceUpdate)}function id(a){a.updatedDisplay=a.mustUpdate&&Bd(a.cm,a.update)}function jd(a){var b=a.cm,c=b.display;a.updatedDisplay&&Kc(b),a.barMeasure=ad(b),c.maxLineChanged&&!b.options.lineWrapping&&(a.adjustWidthTo=Xb(b,c.maxLine,c.maxLine.text.length).left+3,b.display.sizerWidth=a.adjustWidthTo,a.barMeasure.scrollWidth=Math.max(c.scroller.clientWidth,c.sizer.offsetLeft+a.adjustWidthTo+Rb(b)+b.display.barWidth),a.maxScrollLeft=Math.max(0,c.sizer.offsetLeft+a.adjustWidthTo-Sb(b))),(a.updatedDisplay||a.selectionChanged)&&(a.preparedSelection=c.input.prepareSelection(a.focus))}function kd(a){var b=a.cm;null!=a.adjustWidthTo&&(b.display.sizer.style.minWidth=a.adjustWidthTo+"px",a.maxScrollLeftb)&&(e.updateLineNumbers=b),a.curOp.viewChanged=!0,b>=e.viewTo)Ug&&oa(a.doc,b)e.viewFrom?sd(a):(e.viewFrom+=d,e.viewTo+=d);else if(b<=e.viewFrom&&c>=e.viewTo)sd(a);else if(b<=e.viewFrom){var f=td(a,c,c+d,1);f?(e.view=e.view.slice(f.index),e.viewFrom=f.lineN,e.viewTo+=d):sd(a)}else if(c>=e.viewTo){var g=td(a,b,b,-1);g?(e.view=e.view.slice(0,g.index),e.viewTo=g.lineN):sd(a)}else{var h=td(a,b,b,-1),i=td(a,c,c+d,1);h&&i?(e.view=e.view.slice(0,h.index).concat(ub(a,h.lineN,i.lineN)).concat(e.view.slice(i.index)),e.viewTo+=d):sd(a)}var j=e.externalMeasured;j&&(c=e.lineN&&b=d.viewTo)){var f=d.view[zc(a,b)];if(null!=f.node){var g=f.changes||(f.changes=[]);m(g,c)==-1&&g.push(c)}}}function sd(a){a.display.viewFrom=a.display.viewTo=a.doc.first,a.display.view=[],a.display.viewOffset=0}function td(a,b,c,d){var e,f=zc(a,b),g=a.display.view;if(!Ug||c==a.doc.first+a.doc.size)return{index:f,lineN:c};for(var h=a.display.viewFrom,i=0;i0){if(f==g.length-1)return null;e=h+g[f].size-b,f++}else e=h-b;b+=e,c+=e}for(;oa(a.doc,c)!=c;){if(f==(d<0?0:g.length-1))return null;c+=d*g[f-(d<0?1:0)].size,f+=d}return{index:f,lineN:c}}function ud(a,b,c){var d=a.display,e=d.view;0==e.length||b>=d.viewTo||c<=d.viewFrom?(d.view=ub(a,b,c),d.viewFrom=b):(d.viewFrom>b?d.view=ub(a,b,d.viewFrom).concat(d.view):d.viewFromc&&(d.view=d.view.slice(0,zc(a,c)))),d.viewTo=c}function vd(a){for(var b=a.display.view,c=0,d=0;d=a.display.viewTo)){var c=+new Date+a.options.workTime,d=ab(a,b.highlightFrontier),e=[];b.iter(d.line,Math.min(b.first+b.size,a.display.viewTo+500),function(f){if(d.line>=a.display.viewFrom){var g=f.styles,h=f.text.length>a.options.maxHighlightLength?Xa(b.mode,d.state):null,i=$a(a,f,d,!0);h&&(d.state=h),f.styles=i.styles;var j=f.styleClasses,k=i.classes;k?f.styleClasses=k:j&&(f.styleClasses=null);for(var l=!g||g.length!=f.styles.length||j!=k&&(!j||!k||j.bgClass!=k.bgClass||j.textClass!=k.textClass),m=0;!l&&mc)return wd(a,a.options.workDelay),!0}),b.highlightFrontier=d.line,b.modeFrontier=Math.max(b.modeFrontier,d.line),e.length&&md(a,function(){for(var b=0;b=d.viewFrom&&c.visible.to<=d.viewTo&&(null==d.updateLineNumbers||d.updateLineNumbers>=d.viewTo)&&d.renderedView==d.view&&0==vd(a))return!1;Oc(a)&&(sd(a),c.dims=uc(a));var f=e.first+e.size,g=Math.max(c.visible.from-a.options.viewportMargin,e.first),h=Math.min(f,c.visible.to+a.options.viewportMargin);d.viewFromh&&d.viewTo-h<20&&(h=Math.min(f,d.viewTo)),Ug&&(g=oa(a.doc,g),h=pa(a.doc,h));var i=g!=d.viewFrom||h!=d.viewTo||d.lastWrapHeight!=c.wrapperHeight||d.lastWrapWidth!=c.wrapperWidth;ud(a,g,h),d.viewOffset=sa(B(a.doc,d.viewFrom)),a.display.mover.style.top=d.viewOffset+"px";var j=vd(a);if(!i&&0==j&&!c.force&&d.renderedView==d.view&&(null==d.updateLineNumbers||d.updateLineNumbers>=d.viewTo))return!1;var k=zd(a);return j>4&&(d.lineDiv.style.display="none"),Ed(a,d.updateLineNumbers,c.dims),j>4&&(d.lineDiv.style.display=""),d.renderedView=d.view,Ad(k),b(d.cursorDiv),b(d.selectionDiv),d.gutters.style.height=d.sizer.style.minHeight=0,i&&(d.lastWrapHeight=c.wrapperHeight,d.lastWrapWidth=c.wrapperWidth,wd(a,400)),d.updateLineNumbers=null,!0}function Cd(a,b){for(var c=b.viewport,d=!0;(d&&a.options.lineWrapping&&b.oldDisplayWidth!=Sb(a)||(c&&null!=c.top&&(c={top:Math.min(a.doc.height+Pb(a.display)-Tb(a),c.top)}),b.visible=Mc(a.display,a.doc,c),!(b.visible.from>=a.display.viewFrom&&b.visible.to<=a.display.viewTo)))&&Bd(a,b);d=!1){Kc(a);var e=ad(a);Ac(a),bd(a,e),Gd(a,e),b.force=!1}b.signal(a,"update",a),a.display.viewFrom==a.display.reportedViewFrom&&a.display.viewTo==a.display.reportedViewTo||(b.signal(a,"viewportChange",a,a.display.viewFrom,a.display.viewTo),a.display.reportedViewFrom=a.display.viewFrom,a.display.reportedViewTo=a.display.viewTo)}function Dd(a,b){var c=new uh(a,b);if(Bd(a,c)){Kc(a),Cd(a,c);var d=ad(a);Ac(a),bd(a,d),Gd(a,d),c.finish()}}function Ed(a,c,d){function e(b){var c=b.nextSibling;return pg&&zg&&a.display.currentWheelTarget==b?b.style.display="none":b.parentNode.removeChild(b),c}for(var f=a.display,g=a.options.lineNumbers,h=f.lineDiv,i=h.firstChild,j=f.view,k=f.viewFrom,l=0;l-1&&(o=!1),Ab(a,n,k,d)),o&&(b(n.lineNumber),n.lineNumber.appendChild(document.createTextNode(I(a.options,k)))),i=n.node.nextSibling}else{var p=Ib(a,n,k,d);h.insertBefore(p,i)}k+=n.size}for(;i;)i=e(i)}function Fd(a){var b=a.display.gutters.offsetWidth;a.display.sizer.style.marginLeft=b+"px"}function Gd(a,b){a.display.sizer.style.minHeight=b.docHeight+"px",a.display.heightForcer.style.top=b.docHeight+"px",a.display.gutters.style.height=b.docHeight+a.display.barHeight+Rb(a)+"px"}function Hd(a){var c=a.display.gutters,e=a.options.gutters;b(c);for(var f=0;f-1&&!a.lineNumbers&&(a.gutters=a.gutters.slice(0),a.gutters.splice(b,1))}function Jd(a){var b=a.wheelDeltaX,c=a.wheelDeltaY;return null==b&&a.detail&&a.axis==a.HORIZONTAL_AXIS&&(b=a.detail),null==c&&a.detail&&a.axis==a.VERTICAL_AXIS?c=a.detail:null==c&&(c=a.wheelDelta),{x:b,y:c}}function Kd(a){var b=Jd(a);return b.x*=wh,b.y*=wh,b}function Ld(a,b){var c=Jd(b),d=c.x,e=c.y,f=a.display,g=f.scroller,h=g.scrollWidth>g.clientWidth,i=g.scrollHeight>g.clientHeight;if(d&&h||e&&i){if(e&&zg&&pg)a:for(var j=b.target,k=f.view;j!=g;j=j.parentNode)for(var l=0;l=0){var g=O(f.from(),e.from()),h=N(f.to(),e.to()),i=f.empty()?e.from()==e.head:f.from()==f.head;d<=b&&--b,a.splice(--d,2,new yh(i?h:g,i?g:h))}}return new xh(a,b)}function Nd(a,b){return new xh([new yh(a,b||a)],0)}function Od(a){return a.text?J(a.from.line+a.text.length-1,p(a.text).length+(1==a.text.length?a.from.ch:0)):a.to}function Pd(a,b){if(K(a,b.from)<0)return a;if(K(a,b.to)<=0)return Od(b);var c=a.line+b.text.length-(b.to.line-b.from.line)-1,d=a.ch;return a.line==b.to.line&&(d+=Od(b).ch-b.to.ch),J(c,d)}function Qd(a,b){for(var c=[],d=0;d1&&a.remove(h.line+1,o-1),a.insert(h.line+1,s)}yb(a,"change",a,b)}function Xd(a,b,c){function d(a,e,f){if(a.linked)for(var g=0;g1&&!a.done[a.done.length-2].ranges?(a.done.pop(),p(a.done)):void 0}function de(a,b,c,d){var e=a.history;e.undone.length=0;var f,g,h=+new Date;if((e.lastOp==d||e.lastOrigin==b.origin&&b.origin&&("+"==b.origin.charAt(0)&&a.cm&&e.lastModTime>h-a.cm.options.historyEventDelay||"*"==b.origin.charAt(0)))&&(f=ce(e,e.lastOp==d)))g=p(f.changes),0==K(b.from,b.to)&&0==K(b.from,g.to)?g.to=Od(b):f.changes.push(ae(a,b));else{var i=p(e.done);for(i&&i.ranges||ge(a.sel,e.done),f={changes:[ae(a,b)],generation:e.generation},e.done.push(f);e.done.length>e.undoDepth;)e.done.shift(),e.done[0].ranges||e.done.shift()}e.done.push(c),e.generation=++e.maxGeneration,e.lastModTime=e.lastSelTime=h,e.lastOp=e.lastSelOp=d,e.lastOrigin=e.lastSelOrigin=b.origin,g||Ea(a,"historyAdded")}function ee(a,b,c,d){var e=b.charAt(0);return"*"==e||"+"==e&&c.ranges.length==d.ranges.length&&c.somethingSelected()==d.somethingSelected()&&new Date-a.history.lastSelTime<=(a.cm?a.cm.options.historyEventDelay:500)}function fe(a,b,c,d){var e=a.history,f=d&&d.origin;c==e.lastSelOp||f&&e.lastSelOrigin==f&&(e.lastModTime==e.lastSelTime&&e.lastOrigin==f||ee(a,f,p(e.done),b))?e.done[e.done.length-1]=b:ge(b,e.done),e.lastSelTime=+new Date,e.lastSelOrigin=f,e.lastSelOp=c,d&&d.clearRedo!==!1&&be(e.undone)}function ge(a,b){var c=p(b);c&&c.ranges&&c.equals(a)||b.push(a)}function he(a,b,c,d){var e=b["spans_"+a.id],f=0;a.iter(Math.max(a.first,c),Math.min(a.first+a.size,d),function(c){c.markedSpans&&((e||(e=b["spans_"+a.id]={}))[f]=c.markedSpans),++f})}function ie(a){if(!a)return null;for(var b,c=0;c-1&&(p(h)[l]=j[l],delete j[l])}}}return d}function me(a,b,c,d){if(d){var e=a.anchor;if(c){var f=K(b,e)<0;f!=K(c,e)<0?(e=b,b=c):f!=K(b,c)<0&&(b=c)}return new yh(e,b)}return new yh(c||b,b)}function ne(a,b,c,d,e){null==e&&(e=a.cm&&(a.cm.display.shift||a.extend)),te(a,new xh([me(a.sel.primary(),b,c,e)],0),d)}function oe(a,b,c){for(var d=[],e=a.cm&&(a.cm.display.shift||a.extend),f=0;f=b.ch:h.to>b.ch))){if(e&&(Ea(i,"beforeCursorEnter"),i.explicitlyCleared)){if(f.markedSpans){--g;continue}break}if(!i.atomic)continue;if(c){var j=i.find(d<0?1:-1),k=void 0;if((d<0?i.inclusiveRight:i.inclusiveLeft)&&(j=Ae(a,j,-d,j&&j.line==b.line?f:null)),j&&j.line==b.line&&(k=K(j,c))&&(d<0?k<0:k>0))return ye(a,j,b,d,e)}var l=i.find(d<0?-1:1);return(d<0?i.inclusiveLeft:i.inclusiveRight)&&(l=Ae(a,l,d,l.line==b.line?f:null)),l?ye(a,l,b,d,e):null}}return b}function ze(a,b,c,d,e){var f=d||1,g=ye(a,b,c,f,e)||!e&&ye(a,b,c,f,!0)||ye(a,b,c,-f,e)||!e&&ye(a,b,c,-f,!0);return g?g:(a.cantEdit=!0,J(a.first,0))}function Ae(a,b,c,d){return c<0&&0==b.ch?b.line>a.first?Q(a,J(b.line-1)):null:c>0&&b.ch==(d||B(a,b.line)).text.length?b.line=0;--e)Ee(a,{from:d[e].from,to:d[e].to,text:e?[""]:b.text,origin:b.origin});else Ee(a,b)}}function Ee(a,b){if(1!=b.text.length||""!=b.text[0]||0!=K(b.from,b.to)){var c=Qd(a,b);de(a,b,c,a.cm?a.cm.curOp.id:NaN),He(a,b,c,_(a,b));var d=[];Xd(a,function(a,c){c||m(d,a.history)!=-1||(Me(a.history,b),d.push(a.history)),He(a,b,null,_(a,b))})}}function Fe(a,b,c){if(!a.cm||!a.cm.state.suppressEdits||c){for(var d,e=a.history,f=a.sel,g="undo"==b?e.done:e.undone,h="undo"==b?e.undone:e.done,i=0;i=0;--n){var o=l(n);if(o)return o.v}}}}function Ge(a,b){if(0!=b&&(a.first+=b,a.sel=new xh(q(a.sel.ranges,function(a){return new yh(J(a.anchor.line+b,a.anchor.ch),J(a.head.line+b,a.head.ch))}),a.sel.primIndex),a.cm)){qd(a.cm,a.first,a.first-b,b);for(var c=a.cm.display,d=c.viewFrom;da.lastLine())){if(b.from.linef&&(b={from:b.from,to:J(f,B(a,f).text.length),text:[b.text[0]],origin:b.origin}),b.removed=C(a,b.from,b.to),c||(c=Qd(a,b)),a.cm?Ie(a.cm,b,d):Wd(a,b,d),ue(a,c,Ng)}}function Ie(a,b,c){var d=a.doc,e=a.display,f=b.from,g=b.to,h=!1,i=f.line;a.options.lineWrapping||(i=F(la(B(d,f.line))),d.iter(i,g.line+1,function(a){if(a==e.maxLine)return h=!0,!0})),d.sel.contains(b.from,b.to)>-1&&Ga(a),Wd(d,b,c,wc(a)),a.options.lineWrapping||(d.iter(i,f.line+b.text.length,function(a){var b=ta(a);b>e.maxLineLength&&(e.maxLine=a,e.maxLineLength=b,e.maxLineChanged=!0,h=!1)}),h&&(a.curOp.updateMaxLine=!0)),ib(d,f.line),wd(a,400);var j=b.text.length-(g.line-f.line)-1;b.full?qd(a):f.line!=g.line||1!=b.text.length||Vd(a.doc,b)?qd(a,f.line,g.line+1,j):rd(a,f.line,"text");var k=Ha(a,"changes"),l=Ha(a,"change");if(l||k){var m={from:f,to:g,text:b.text,removed:b.removed,origin:b.origin};l&&yb(a,"change",a,m),k&&(a.curOp.changeObjs||(a.curOp.changeObjs=[])).push(m)}a.display.selForContextMenu=null}function Je(a,b,c,d,e){if(d||(d=c),K(d,c)<0){var f=d;d=c,c=f}"string"==typeof b&&(b=a.splitLines(b)),De(a,{from:c,to:d,text:b,origin:e})}function Ke(a,b,c,d){c0||0==h&&g.clearWhenEmpty!==!1)return g;if(g.replacedWith&&(g.collapsed=!0,g.widgetNode=e("span",[g.replacedWith],"CodeMirror-widget"),d.handleMouseEvents||g.widgetNode.setAttribute("cm-ignore-events","true"),d.insertLeft&&(g.widgetNode.insertLeft=!0)),g.collapsed){if(ka(a,b.line,b,c,g)||b.line!=c.line&&ka(a,c.line,b,c,g))throw new Error("Inserting collapsed marker partially overlapping an existing one");U()}g.addToHistory&&de(a,{from:b,to:c,origin:"markText"},a.sel,NaN);var i,j=b.line,l=a.cm;if(a.iter(j,c.line+1,function(a){l&&g.collapsed&&!l.options.lineWrapping&&la(a)==l.display.maxLine&&(i=!0),g.collapsed&&j!=b.line&&E(a,0),Y(a,new V(g,j==b.line?b.ch:null,j==c.line?c.ch:null)),++j}),g.collapsed&&a.iter(b.line,c.line+1,function(b){qa(a,b)&&E(b,0)}),g.clearOnEnter&&Yg(g,"beforeCursorEnter",function(){return g.clear()}),g.readOnly&&(T(),(a.history.done.length||a.history.undone.length)&&a.clearHistory()),g.collapsed&&(g.id=++Ah,g.atomic=!0),l){if(i&&(l.curOp.updateMaxLine=!0),g.collapsed)qd(l,b.line,c.line+1);else if(g.className||g.title||g.startStyle||g.endStyle||g.css)for(var m=b.line;m<=c.line;m++)rd(l,m,"text");g.atomic&&we(l.doc),yb(l,"markerAdded",l,g)}return g}function Te(a,b,c,d,e){d=k(d),d.shared=!1;var f=[Se(a,b,c,d,e)],g=f[0],h=d.widgetNode;return Xd(a,function(a){h&&(d.widgetNode=h.cloneNode(!0)),f.push(Se(a,Q(a,b),Q(a,c),d,e));for(var i=0;i-1)return b.state.draggingText(a),void setTimeout(function(){return b.display.input.focus()},20);try{var j=a.dataTransfer.getData("Text");if(j){var k;if(b.state.draggingText&&!b.state.draggingText.copy&&(k=b.listSelections()),ue(b.doc,Nd(c,c)),k)for(var l=0;l=0;b--)Je(a.doc,"",d[b].from,d[b].to,"+delete");Uc(a)})}function mf(a,b){var c=B(a.doc,b),d=la(c);return d!=c&&(b=F(d)),Aa(!0,a,d,b,1)}function nf(a,b){var c=B(a.doc,b),d=ma(c);return d!=c&&(b=F(d)),Aa(!0,a,c,b,-1)}function of(a,b){var c=mf(a,b.line),d=B(a.doc,c.line),e=xa(d,a.doc.direction);if(!e||0==e[0].level){var f=Math.max(0,d.text.search(/\S/)),g=b.line==c.line&&b.ch<=f&&b.ch;return J(c.line,g?0:f,c.sticky)}return c}function pf(a,b,c){if("string"==typeof b&&(b=Mh[b],!b))return!1;a.display.input.ensurePolled();var d=a.display.shift,e=!1;try{a.isReadOnly()&&(a.state.suppressEdits=!0),c&&(a.display.shift=!1),e=b(a)!=Mg}finally{a.display.shift=d,a.state.suppressEdits=!1}return e}function qf(a,b,c){for(var d=0;d-1&&(K((e=h.ranges[e]).from(),b)<0||b.xRel>0)&&(K(e.to(),b)>0||b.xRel<0)?Df(a,d,b,f):Ff(a,d,b,f)}function Df(a,b,c,d){var e=a.display,f=!1,g=nd(a,function(b){pg&&(e.scroller.draggable=!1),a.state.draggingText=!1,Da(document,"mouseup",g),Da(document,"mousemove",h),Da(e.scroller,"dragstart",i),Da(e.scroller,"drop",g),f||(Ja(b),d.addNew||ne(a.doc,c,null,null,d.extend),pg||ng&&9==og?setTimeout(function(){document.body.focus(),e.input.focus()},20):e.input.focus())}),h=function(a){f=f||Math.abs(b.clientX-a.clientX)+Math.abs(b.clientY-a.clientY)>=10},i=function(){return f=!0};pg&&(e.scroller.draggable=!0),a.state.draggingText=g,g.copy=!d.moveOnDrag,e.scroller.dragDrop&&e.scroller.dragDrop(),Yg(document,"mouseup",g),Yg(document,"mousemove",h),Yg(e.scroller,"dragstart",i),Yg(e.scroller,"drop",g),Hc(a),setTimeout(function(){return e.input.focus()},20)}function Ef(a,b,c){if("char"==c)return new yh(b,b);if("word"==c)return a.findWordAt(b);if("line"==c)return new yh(J(b.line,0),Q(a.doc,J(b.line+1,0)));var d=c(a,b);return new yh(d.from,d.to)}function Ff(a,b,c,d){function e(b){if(0!=K(r,b))if(r=b,"rectangle"==d.unit){for(var e=[],f=a.options.tabSize,g=l(B(j,c.line).text,c.ch,f),h=l(B(j,b.line).text,b.ch,f),i=Math.min(g,h),p=Math.max(g,h),q=Math.min(c.line,b.line),s=Math.min(a.lastLine(),Math.max(c.line,b.line));q<=s;q++){var t=B(j,q).text,u=n(t,i,f);i==p?e.push(new yh(J(q,u),J(q,u))):t.length>u&&e.push(new yh(J(q,u),J(q,n(t,p,f))))}e.length||e.push(new yh(c,c)),te(j,Md(o.ranges.slice(0,m).concat(e),m),{origin:"*mouse",scroll:!1}),a.scrollIntoView(b)}else{var v,w=k,x=Ef(a,b,d.unit),y=w.anchor;K(x.anchor,y)>0?(v=x.head,y=O(w.from(),x.anchor)):(v=x.anchor,y=N(w.to(),x.head));var z=o.ranges.slice(0);z[m]=new yh(Q(j,y),v),te(j,Md(z,m),Og)}}function f(b){var c=++t,h=yc(a,b,!0,"rectangle"==d.unit);if(h)if(0!=K(h,r)){a.curOp.focus=g(),e(h);var k=Mc(i,j);(h.line>=k.to||h.lines.bottom?20:0;l&&setTimeout(nd(a,function(){t==c&&(i.scroller.scrollTop+=l,f(b))}),50)}}function h(b){a.state.selectingText=!1,t=1/0,Ja(b),i.input.focus(),Da(document,"mousemove",u),Da(document,"mouseup",v),j.history.lastSelOrigin=null}var i=a.display,j=a.doc;Ja(b);var k,m,o=j.sel,p=o.ranges;if(d.addNew&&!d.extend?(m=j.sel.contains(c),k=m>-1?p[m]:new yh(c,c)):(k=j.sel.primary(),m=j.sel.primIndex),"rectangle"==d.unit)d.addNew||(k=new yh(c,c)),c=yc(a,b,!0,!0),m=-1;else{var q=Ef(a,c,d.unit);k=d.extend?me(k,q.anchor,q.head,d.extend):q}d.addNew?m==-1?(m=p.length,te(j,Md(p.concat([k]),m),{scroll:!1,origin:"*mouse"})):p.length>1&&p[m].empty()&&"char"==d.unit&&!d.extend?(te(j,Md(p.slice(0,m).concat(p.slice(m+1)),0),{scroll:!1,origin:"*mouse"}),o=j.sel):pe(j,m,k,Og):(m=0,te(j,new xh([k],0),Og),o=j.sel);var r=c,s=i.wrapper.getBoundingClientRect(),t=0,u=nd(a,function(a){Oa(a)?f(a):h(a)}),v=nd(a,h);a.state.selectingText=v,Yg(document,"mousemove",u),Yg(document,"mouseup",v)}function Gf(a,b,c,d){var e,f;try{e=b.clientX,f=b.clientY}catch(b){return!1}if(e>=Math.floor(a.display.gutters.getBoundingClientRect().right))return!1;d&&Ja(b);var g=a.display,h=g.lineDiv.getBoundingClientRect();if(f>h.bottom||!Ha(a,c))return La(b);f-=h.top-g.viewOffset;for(var i=0;i=e){var k=G(a.doc,f),l=a.options.gutters[i];return Ea(a,c,a,k,l,b),La(b)}}}function Hf(a,b){return Gf(a,b,"gutterClick",!0)}function If(a,b){Nb(a.display,b)||Jf(a,b)||Fa(a,b,"contextmenu")||a.display.input.onContextMenu(b)}function Jf(a,b){return!!Ha(a,"gutterContextMenu")&&Gf(a,b,"gutterContextMenu",!1)}function Kf(a){a.display.wrapper.className=a.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+a.options.theme.replace(/(^|\s)\s*/g," cm-s-"),fc(a)}function Lf(a){function b(b,d,e,f){a.defaults[b]=d,e&&(c[b]=f?function(a,b,c){c!=Th&&e(a,b,c)}:e)}var c=a.optionHandlers;a.defineOption=b,a.Init=Th,b("value","",function(a,b){return a.setValue(b)},!0),b("mode",null,function(a,b){a.doc.modeOption=b,Td(a)},!0),b("indentUnit",2,Td,!0),b("indentWithTabs",!1),b("smartIndent",!0),b("tabSize",4,function(a){Ud(a),fc(a),qd(a)},!0),b("lineSeparator",null,function(a,b){if(a.doc.lineSep=b,b){var c=[],d=a.doc.first;a.doc.iter(function(a){for(var e=0;;){var f=a.text.indexOf(b,e);if(f==-1)break;e=f+b.length,c.push(J(d,f))}d++});for(var e=c.length-1;e>=0;e--)Je(a.doc,b,c[e],J(c[e].line,c[e].ch+b.length))}}),b("specialChars",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b-\u200f\u2028\u2029\ufeff]/g,function(a,b,c){a.state.specialChars=new RegExp(b.source+(b.test("\t")?"":"|\t"),"g"),c!=Th&&a.refresh()}),b("specialCharPlaceholder",nb,function(a){return a.refresh()},!0),b("electricChars",!0),b("inputStyle",yg?"contenteditable":"textarea",function(){throw new Error("inputStyle can not (yet) be changed in a running editor")},!0),b("spellcheck",!1,function(a,b){return a.getInputField().spellcheck=b},!0),b("rtlMoveVisually",!Bg),b("wholeLineUpdateBefore",!0),b("theme","default",function(a){Kf(a),Mf(a)},!0),b("keyMap","default",function(a,b,c){var d=kf(b),e=c!=Th&&kf(c);e&&e.detach&&e.detach(a,d),d.attach&&d.attach(a,e||null)}),b("extraKeys",null),b("configureMouse",null),b("lineWrapping",!1,Of,!0),b("gutters",[],function(a){Id(a.options),Mf(a)},!0),b("fixedGutter",!0,function(a,b){a.display.gutters.style.left=b?vc(a.display)+"px":"0",a.refresh()},!0),b("coverGutterNextToScrollbar",!1,function(a){return bd(a)},!0),b("scrollbarStyle","native",function(a){dd(a),bd(a),a.display.scrollbars.setScrollTop(a.doc.scrollTop),a.display.scrollbars.setScrollLeft(a.doc.scrollLeft)},!0),b("lineNumbers",!1,function(a){Id(a.options),Mf(a)},!0),b("firstLineNumber",1,Mf,!0),b("lineNumberFormatter",function(a){return a},Mf,!0),b("showCursorWhenSelecting",!1,Ac,!0),b("resetSelectionOnContextMenu",!0),b("lineWiseCopyCut",!0),b("pasteLinesPerSelection",!0),b("readOnly",!1,function(a,b){"nocursor"==b&&(Jc(a),a.display.input.blur()),a.display.input.readOnlyChanged(b)}),b("disableInput",!1,function(a,b){b||a.display.input.reset()},!0),b("dragDrop",!0,Nf),b("allowDropFileTypes",null),b("cursorBlinkRate",530),b("cursorScrollMargin",0),b("cursorHeight",1,Ac,!0),b("singleCursorHeightPerLine",!0,Ac,!0),b("workTime",100),b("workDelay",100),b("flattenSpans",!0,Ud,!0),b("addModeClass",!1,Ud,!0),b("pollInterval",100),b("undoDepth",200,function(a,b){return a.doc.history.undoDepth=b}),b("historyEventDelay",1250),b("viewportMargin",10,function(a){return a.refresh()},!0),b("maxHighlightLength",1e4,Ud,!0),b("moveInputWithCursor",!0,function(a,b){b||a.display.input.resetPosition()}),b("tabindex",null,function(a,b){return a.display.input.getField().tabIndex=b||""}),b("autofocus",null),b("direction","ltr",function(a,b){return a.doc.setDirection(b)},!0)}function Mf(a){Hd(a),qd(a),Nc(a)}function Nf(a,b,c){var d=c&&c!=Th;if(!b!=!d){var e=a.display.dragFunctions,f=b?Yg:Da;f(a.display.scroller,"dragstart",e.start),f(a.display.scroller,"dragenter",e.enter),f(a.display.scroller,"dragover",e.over),f(a.display.scroller,"dragleave",e.leave),f(a.display.scroller,"drop",e.drop)}}function Of(a){a.options.lineWrapping?(h(a.display.wrapper,"CodeMirror-wrap"),a.display.sizer.style.minWidth="",a.display.sizerWidth=null):(Gg(a.display.wrapper,"CodeMirror-wrap"),ua(a)),xc(a),qd(a),fc(a),setTimeout(function(){return bd(a)},100)}function Pf(a,b){var c=this;if(!(this instanceof Pf))return new Pf(a,b);this.options=b=b?k(b):{},k(Uh,b,!1),Id(b);var d=b.value;"string"==typeof d&&(d=new Eh(d,b.mode,null,b.lineSeparator,b.direction)),this.doc=d;var e=new Pf.inputStyles[b.inputStyle](this),f=this.display=new A(a,d,e);f.wrapper.CodeMirror=this,Hd(this),Kf(this),b.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),dd(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:!1,cutIncoming:!1,selectingText:!1,draggingText:!1,highlight:new Ig,keySeq:null,specialChars:null},b.autofocus&&!yg&&f.input.focus(),ng&&og<11&&setTimeout(function(){return c.display.input.reset(!0)},20),Qf(this),af(),ed(this),this.curOp.forceUpdate=!0,Yd(this,d),b.autofocus&&!yg||this.hasFocus()?setTimeout(j(Ic,this),20):Jc(this);for(var g in Vh)Vh.hasOwnProperty(g)&&Vh[g](c,b[g],Th);Oc(this),b.finishInit&&b.finishInit(this);for(var h=0;h400}var e=a.display;Yg(e.scroller,"mousedown",nd(a,zf)),ng&&og<11?Yg(e.scroller,"dblclick",nd(a,function(b){if(!Fa(a,b)){var c=yc(a,b);if(c&&!Hf(a,b)&&!Nb(a.display,b)){Ja(b);var d=a.findWordAt(c);ne(a.doc,d.anchor,d.head)}}})):Yg(e.scroller,"dblclick",function(b){return Fa(a,b)||Ja(b)}),Fg||Yg(e.scroller,"contextmenu",function(b){return If(a,b)});var f,g={end:0};Yg(e.scroller,"touchstart",function(b){if(!Fa(a,b)&&!c(b)){e.input.ensurePolled(),clearTimeout(f);var d=+new Date;e.activeTouch={start:d,moved:!1,prev:d-g.end<=300?g:null},1==b.touches.length&&(e.activeTouch.left=b.touches[0].pageX,e.activeTouch.top=b.touches[0].pageY)}}),Yg(e.scroller,"touchmove",function(){e.activeTouch&&(e.activeTouch.moved=!0)}),Yg(e.scroller,"touchend",function(c){var f=e.activeTouch;if(f&&!Nb(e,c)&&null!=f.left&&!f.moved&&new Date-f.start<300){var g,h=a.coordsChar(e.activeTouch,"page");g=!f.prev||d(f,f.prev)?new yh(h,h):!f.prev.prev||d(f,f.prev.prev)?a.findWordAt(h):new yh(J(h.line,0),Q(a.doc,J(h.line+1,0))),a.setSelection(g.anchor,g.head),a.focus(),Ja(c)}b()}),Yg(e.scroller,"touchcancel",b),Yg(e.scroller,"scroll",function(){e.scroller.clientHeight&&(Zc(a,e.scroller.scrollTop),_c(a,e.scroller.scrollLeft,!0),Ea(a,"scroll",a))}),Yg(e.scroller,"mousewheel",function(b){return Ld(a,b)}),Yg(e.scroller,"DOMMouseScroll",function(b){return Ld(a,b)}),Yg(e.wrapper,"scroll",function(){return e.wrapper.scrollTop=e.wrapper.scrollLeft=0}),e.dragFunctions={enter:function(b){Fa(a,b)||Ma(b)},over:function(b){Fa(a,b)||(Ze(a,b),Ma(b))},start:function(b){return Ye(a,b)},drop:nd(a,Xe),leave:function(b){Fa(a,b)||$e(a)}};var h=e.input.getField();Yg(h,"keyup",function(b){return wf.call(a,b)}),Yg(h,"keydown",nd(a,uf)),Yg(h,"keypress",nd(a,xf)),Yg(h,"focus",function(b){return Ic(a,b)}),Yg(h,"blur",function(b){return Jc(a,b)})}function Rf(a,b,c,d){var e,f=a.doc;null==c&&(c="add"),"smart"==c&&(f.mode.indent?e=ab(a,b).state:c="prev");var g=a.options.tabSize,h=B(f,b),i=l(h.text,null,g);h.stateAfter&&(h.stateAfter=null);var j,k=h.text.match(/^\s*/)[0];if(d||/\S/.test(h.text)){if("smart"==c&&(j=f.mode.indent(e,h.text.slice(k.length),h.text),j==Mg||j>150)){if(!d)return;c="prev"}}else j=0,c="not";"prev"==c?j=b>f.first?l(B(f,b-1).text,null,g):0:"add"==c?j=i+a.options.indentUnit:"subtract"==c?j=i-a.options.indentUnit:"number"==typeof c&&(j=i+c),j=Math.max(0,j);var m="",n=0;if(a.options.indentWithTabs)for(var p=Math.floor(j/g);p;--p)n+=g,m+="\t";if(n1)if(Xh&&Xh.text.join("\n")==b){if(d.ranges.length%Xh.text.length==0){i=[];for(var j=0;j=0;l--){var m=d.ranges[l],n=m.from(),o=m.to();m.empty()&&(c&&c>0?n=J(n.line,n.ch-c):a.state.overwrite&&!g?o=J(o.line,Math.min(B(f,o.line).text.length,o.ch+p(h).length)):Xh&&Xh.lineWise&&Xh.text.join("\n")==b&&(n=o=J(n.line,0))),k=a.curOp.updateInput;var r={from:n,to:o,text:i?i[l%i.length]:h,origin:e||(g?"paste":a.state.cutIncoming?"cut":"+input")};De(a.doc,r),yb(a,"inputRead",a,r)}b&&!g&&Vf(a,b),Uc(a),a.curOp.updateInput=k,a.curOp.typing=!0,a.state.pasteIncoming=a.state.cutIncoming=!1}function Uf(a,b){var c=a.clipboardData&&a.clipboardData.getData("Text");if(c)return a.preventDefault(),b.isReadOnly()||b.options.disableInput||md(b,function(){return Tf(b,c,0,null,"paste")}),!0}function Vf(a,b){if(a.options.electricChars&&a.options.smartIndent)for(var c=a.doc.sel,d=c.ranges.length-1;d>=0;d--){var e=c.ranges[d];if(!(e.head.ch>100||d&&c.ranges[d-1].head.line==e.head.line)){var f=a.getModeAt(e.head),g=!1;if(f.electricChars){for(var h=0;h-1){g=Rf(a,e.head.line,"smart");break}}else f.electricInput&&f.electricInput.test(B(a.doc,e.head.line).text.slice(0,e.head.ch))&&(g=Rf(a,e.head.line,"smart"));g&&yb(a,"electricInput",a,e.head.line)}}}function Wf(a){for(var b=[],c=[],d=0;d=a.first+a.size)&&(b=new J(d,b.ch,b.sticky),j=B(a,d))}function g(d){var g;if(g=e?Ba(a.cm,j,b,c):za(j,b,c),null==g){if(d||!f())return!1;b=Aa(e,a.cm,j,b.line,c)}else b=g;return!0}var h=b,i=c,j=B(a,b.line);if("char"==d)g();else if("column"==d)g(!0);else if("word"==d||"group"==d)for(var k=null,l="group"==d,m=a.cm&&a.cm.getHelper(b,"wordChars"),n=!0;!(c<0)||g(!n);n=!1){var o=j.text.charAt(b.ch)||"\n",p=v(o,m)?"w":l&&"\n"==o?"n":!l||/\s/.test(o)?null:"p";if(!l||n||p||(p="s"),k&&k!=p){c<0&&(c=1,g(),b.sticky="after");break}if(p&&(k=p),c>0&&!g(!n))break}var q=ze(a,b,h,i,!0);return L(h,q)&&(q.hitSide=!0),q}function $f(a,b,c,d){var e,f=a.doc,g=b.left;if("page"==d){var h=Math.min(a.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight),i=Math.max(h-.5*sc(a.display),3);e=(c>0?b.bottom:b.top)+c*i}else"line"==d&&(e=c>0?b.bottom+3:b.top-3);for(var j;j=oc(a,g,e),j.outside;){if(c<0?e<=0:e>=f.height){j.hitSide=!0;break}e+=5*c}return j}function _f(a,b){var c=Yb(a,b.line);if(!c||c.hidden)return null;var d=B(a.doc,b.line),e=Vb(c,d,b.line),f=xa(d,a.doc.direction),g="left";if(f){var h=wa(f,b.ch);g=h%2?"right":"left"}var i=_b(e.map,b.ch,g);return i.offset="right"==i.collapse?i.end:i.start,i}function ag(a){for(var b=a;b;b=b.parentNode)if(/CodeMirror-gutter-wrapper/.test(b.className))return!0;return!1}function bg(a,b){return b&&(a.bad=!0),a}function cg(a,b,c,d,e){function f(a){return function(b){return b.id==a}}function g(){k&&(j+=l,k=!1)}function h(a){a&&(g(),j+=a)}function i(b){if(1==b.nodeType){var c=b.getAttribute("cm-text");if(null!=c)return void h(c||b.textContent.replace(/\u200b/g,""));var j,m=b.getAttribute("cm-marker");if(m){var n=a.findMarks(J(d,0),J(e+1,0),f(+m));return void(n.length&&(j=n[0].find(0))&&h(C(a.doc,j.from,j.to).join(l)))}if("false"==b.getAttribute("contenteditable"))return;var o=/^(pre|div|p)$/i.test(b.nodeName);o&&g();for(var p=0;p=15&&(sg=!1,pg=!0);var Dg,Eg=zg&&(qg||sg&&(null==Cg||Cg<12.11)),Fg=jg||ng&&og>=9,Gg=function(b,c){var d=b.className,e=a(c).exec(d);if(e){var f=d.slice(e.index+e[0].length);b.className=d.slice(0,e.index)+(f?e[1]+f:"")}};Dg=document.createRange?function(a,b,c,d){var e=document.createRange();return e.setEnd(d||a,c),e.setStart(a,b),e}:function(a,b,c){var d=document.body.createTextRange();try{d.moveToElementText(a.parentNode)}catch(e){return d}return d.collapse(!0),d.moveEnd("character",c),d.moveStart("character",b),d};var Hg=function(a){a.select()};wg?Hg=function(a){a.selectionStart=0,a.selectionEnd=a.value.length}:ng&&(Hg=function(a){try{a.select()}catch(b){}});var Ig=function(){this.id=null};Ig.prototype.set=function(a,b){clearTimeout(this.id),this.id=setTimeout(b,a)};var Jg,Kg,Lg=30,Mg={toString:function(){return"CodeMirror.Pass"}},Ng={scroll:!1},Og={origin:"*mouse"},Pg={origin:"+move"},Qg=[""],Rg=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,Sg=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/,Tg=!1,Ug=!1,Vg=null,Wg=function(){function a(a){return a<=247?c.charAt(a):1424<=a&&a<=1524?"R":1536<=a&&a<=1785?d.charAt(a-1536):1774<=a&&a<=2220?"r":8192<=a&&a<=8203?"w":8204==a?"b":"L"}function b(a,b,c){this.level=a,this.from=b,this.to=c}var c="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",d="nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111",e=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,f=/[stwN]/,g=/[LRr]/,h=/[Lb1n]/,i=/[1n]/;return function(c,d){var j="ltr"==d?"L":"R";if(0==c.length||"ltr"==d&&!e.test(c))return!1;for(var k=c.length,l=[],m=0;m=this.string.length},fh.prototype.sol=function(){return this.pos==this.lineStart},fh.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},fh.prototype.next=function(){if(this.posb},fh.prototype.eatSpace=function(){for(var a=this,b=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++a.pos;return this.pos>b},fh.prototype.skipToEnd=function(){this.pos=this.string.length},fh.prototype.skipTo=function(a){var b=this.string.indexOf(a,this.pos);if(b>-1)return this.pos=b,!0},fh.prototype.backUp=function(a){this.pos-=a},fh.prototype.column=function(){return this.lastColumnPos0?null:(d&&b!==!1&&(this.pos+=d[0].length),d)}var e=function(a){return c?a.toLowerCase():a},f=this.string.substr(this.pos,a.length);if(e(f)==e(a))return b!==!1&&(this.pos+=a.length),!0},fh.prototype.current=function(){return this.string.slice(this.start,this.pos)},fh.prototype.hideFirstChars=function(a,b){this.lineStart+=a;try{return b()}finally{this.lineStart-=a}},fh.prototype.lookAhead=function(a){var b=this.lineOracle;return b&&b.lookAhead(a)};var gh=function(a,b){this.state=a,this.lookAhead=b},hh=function(a,b,c,d){this.state=b,this.doc=a,this.line=c,this.maxLookAhead=d||0};hh.prototype.lookAhead=function(a){var b=this.doc.getLine(this.line+a);return null!=b&&a>this.maxLookAhead&&(this.maxLookAhead=a),b},hh.prototype.nextLine=function(){this.line++,this.maxLookAhead>0&&this.maxLookAhead--},hh.fromSaved=function(a,b,c){return b instanceof gh?new hh(a,Xa(a.mode,b.state),c,b.lookAhead):new hh(a,Xa(a.mode,b),c)},hh.prototype.save=function(a){var b=a!==!1?Xa(this.doc.mode,this.state):this.state;return this.maxLookAhead>0?new gh(b,this.maxLookAhead):b};var ih=function(a,b,c){this.start=a.start,this.end=a.pos,this.string=a.current(),this.type=b||null,this.state=c},jh=function(a,b,c){this.text=a,da(this,b),this.height=c?c(this):1};jh.prototype.lineNo=function(){return F(this)},Ia(jh);var kh,lh={},mh={},nh=null,oh=null,ph={left:0,right:0,top:0,bottom:0},qh=function(a,b,c){this.cm=c;var e=this.vert=d("div",[d("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),f=this.horiz=d("div",[d("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");a(e),a(f),Yg(e,"scroll",function(){e.clientHeight&&b(e.scrollTop,"vertical")}),Yg(f,"scroll",function(){f.clientWidth&&b(f.scrollLeft,"horizontal")}),this.checkedZeroWidth=!1,ng&&og<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")};qh.prototype.update=function(a){var b=a.scrollWidth>a.clientWidth+1,c=a.scrollHeight>a.clientHeight+1,d=a.nativeBarWidth;if(c){this.vert.style.display="block",this.vert.style.bottom=b?d+"px":"0";var e=a.viewHeight-(b?d:0);this.vert.firstChild.style.height=Math.max(0,a.scrollHeight-a.clientHeight+e)+"px"}else this.vert.style.display="",this.vert.firstChild.style.height="0";if(b){this.horiz.style.display="block",this.horiz.style.right=c?d+"px":"0",this.horiz.style.left=a.barLeft+"px";var f=a.viewWidth-a.barLeft-(c?d:0);this.horiz.firstChild.style.width=Math.max(0,a.scrollWidth-a.clientWidth+f)+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&a.clientHeight>0&&(0==d&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:c?d:0,bottom:b?d:0}},qh.prototype.setScrollLeft=function(a){this.horiz.scrollLeft!=a&&(this.horiz.scrollLeft=a),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},qh.prototype.setScrollTop=function(a){this.vert.scrollTop!=a&&(this.vert.scrollTop=a),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},qh.prototype.zeroWidthHack=function(){var a=zg&&!ug?"12px":"18px";this.horiz.style.height=this.vert.style.width=a,this.horiz.style.pointerEvents=this.vert.style.pointerEvents="none",this.disableHoriz=new Ig,this.disableVert=new Ig},qh.prototype.enableZeroWidthBar=function(a,b,c){function d(){var e=a.getBoundingClientRect(),f="vert"==c?document.elementFromPoint(e.right-1,(e.top+e.bottom)/2):document.elementFromPoint((e.right+e.left)/2,e.bottom-1);f!=a?a.style.pointerEvents="none":b.set(1e3,d)}a.style.pointerEvents="auto",b.set(1e3,d)},qh.prototype.clear=function(){var a=this.horiz.parentNode;a.removeChild(this.horiz),a.removeChild(this.vert)};var rh=function(){};rh.prototype.update=function(){return{bottom:0,right:0}},rh.prototype.setScrollLeft=function(){},rh.prototype.setScrollTop=function(){},rh.prototype.clear=function(){};var sh={"native":qh,"null":rh},th=0,uh=function(a,b,c){var d=a.display;this.viewport=b,this.visible=Mc(d,a.doc,b),this.editorIsHidden=!d.wrapper.offsetWidth,this.wrapperHeight=d.wrapper.clientHeight,this.wrapperWidth=d.wrapper.clientWidth,this.oldDisplayWidth=Sb(a),this.force=c,this.dims=uc(a),this.events=[]};uh.prototype.signal=function(a,b){Ha(a,b)&&this.events.push(arguments)},uh.prototype.finish=function(){for(var a=this,b=0;b=0&&K(a,e.to())<=0)return d}return-1};var yh=function(a,b){this.anchor=a,this.head=b};yh.prototype.from=function(){return O(this.anchor,this.head)},yh.prototype.to=function(){return N(this.anchor,this.head)},yh.prototype.empty=function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch},Oe.prototype={chunkSize:function(){return this.lines.length},removeInner:function(a,b){for(var c=this,d=a,e=a+b;d1||!(this.children[0]instanceof Oe))){var i=[];this.collapse(i),this.children=[new Oe(i)],this.children[0].parent=this}},collapse:function(a){for(var b=this,c=0;c50){for(var h=f.lines.length%25+25,i=h;i10);a.parent.maybeSpill()}},iterN:function(a,b,c){for(var d=this,e=0;eb.display.maxLineLength&&(b.display.maxLine=k,b.display.maxLineLength=l,b.display.maxLineChanged=!0)}null!=e&&b&&this.collapsed&&qd(b,e,f+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,b&&we(b.doc)),b&&yb(b,"markerCleared",b,this,e,f),c&&fd(b),this.parent&&this.parent.clear()}},Bh.prototype.find=function(a,b){var c=this;null==a&&"bookmark"==this.type&&(a=1);for(var d,e,f=0;f=0;j--)De(d,e[j]);i?se(this,i):this.cm&&Uc(this.cm)}),undo:pd(function(){Fe(this,"undo")}),redo:pd(function(){Fe(this,"redo")}),undoSelection:pd(function(){Fe(this,"undo",!0)}),redoSelection:pd(function(){Fe(this,"redo",!0)}),setExtending:function(a){this.extend=a},getExtending:function(){return this.extend},historySize:function(){for(var a=this.history,b=0,c=0,d=0;d=a.ch)&&b.push(e.marker.parent||e.marker)}return b},findMarks:function(a,b,c){a=Q(this,a),b=Q(this,b);var d=[],e=a.line;return this.iter(a.line,b.line+1,function(f){var g=f.markedSpans;if(g)for(var h=0;h=i.to||null==i.from&&e!=a.line||null!=i.from&&e==b.line&&i.from>=b.ch||c&&!c(i.marker)||d.push(i.marker.parent||i.marker)}++e}),d},getAllMarks:function(){var a=[];return this.iter(function(b){var c=b.markedSpans;if(c)for(var d=0;da?(b=a,!0):(a-=f,void++c)}),Q(this,J(c,b))},indexFromPos:function(a){a=Q(this,a);var b=a.ch;if(a.lineb&&(b=a.from),null!=a.to&&a.to0)e=new J(e.line,e.ch+1),a.replaceRange(f.charAt(e.ch-1)+f.charAt(e.ch-2),J(e.line,e.ch-2),e,"+transpose");else if(e.line>a.doc.first){var g=B(a.doc,e.line-1).text;g&&(e=new J(e.line,1),a.replaceRange(f.charAt(0)+a.doc.lineSeparator()+g.charAt(g.length-1),J(e.line-1,g.length-1),e,"+transpose"))}c.push(new yh(e,e))}a.setSelections(c)})},newlineAndIndent:function(a){return md(a,function(){for(var b=a.listSelections(),c=b.length-1;c>=0;c--)a.replaceRange(a.doc.lineSeparator(),b[c].anchor,b[c].head,"+input");b=a.listSelections();for(var d=0;da&&0==K(b,this.pos)&&c==this.button};var Rh,Sh,Th={toString:function(){return"CodeMirror.Init"}},Uh={},Vh={};Pf.defaults=Uh,Pf.optionHandlers=Vh;var Wh=[];Pf.defineInitHook=function(a){return Wh.push(a)};var Xh=null,Yh=function(a){var b=a.optionHandlers,c=a.helpers={};a.prototype={constructor:a,focus:function(){window.focus(),this.display.input.focus()},setOption:function(a,c){var d=this.options,e=d[a];d[a]==c&&"mode"!=a||(d[a]=c,b.hasOwnProperty(a)&&nd(this,b[a])(this,c,e),Ea(this,"optionChange",this,a))},getOption:function(a){return this.options[a]},getDoc:function(){return this.doc},addKeyMap:function(a,b){this.state.keyMaps[b?"push":"unshift"](kf(a))},removeKeyMap:function(a){for(var b=this.state.keyMaps,c=0;cd&&(Rf(b,f.head.line,a,!0),d=f.head.line,e==b.doc.sel.primIndex&&Uc(b));else{var g=f.from(),h=f.to(),i=Math.max(d,g.line);d=Math.min(b.lastLine(),h.line-(h.ch?0:1))+1;for(var j=i;j0&&pe(b.doc,e,new yh(g,k[e].to()),Ng)}}}),getTokenAt:function(a,b){return eb(this,a,b)},getLineTokens:function(a,b){return eb(this,J(a),b,!0)},getTokenTypeAt:function(a){a=Q(this.doc,a);var b,c=_a(this,B(this.doc,a.line)),d=0,e=(c.length-1)/2,f=a.ch;if(0==f)b=c[2];else for(;;){var g=d+e>>1;if((g?c[2*g-1]:0)>=f)e=g;else{if(!(c[2*g+1]f&&(a=f,e=!0),d=B(this.doc,a)}else d=a;return ic(this,d,{top:0,left:0},b||"page",c||e).top+(e?this.doc.height-sa(d):0)},defaultTextHeight:function(){return sc(this.display)},defaultCharWidth:function(){return tc(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(a,b,c,d,e){var f=this.display;a=lc(this,Q(this.doc,a));var g=a.bottom,h=a.left;if(b.style.position="absolute",b.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(b),f.sizer.appendChild(b),"over"==d)g=a.top;else if("above"==d||"near"==d){var i=Math.max(f.wrapper.clientHeight,this.doc.height),j=Math.max(f.sizer.clientWidth,f.lineSpace.clientWidth);("above"==d||a.bottom+b.offsetHeight>i)&&a.top>b.offsetHeight?g=a.top-b.offsetHeight:a.bottom+b.offsetHeight<=i&&(g=a.bottom),h+b.offsetWidth>j&&(h=j-b.offsetWidth)}b.style.top=g+"px",b.style.left=b.style.right="","right"==e?(h=f.sizer.clientWidth-b.offsetWidth,b.style.right="0px"):("left"==e?h=0:"middle"==e&&(h=(f.sizer.clientWidth-b.offsetWidth)/2),b.style.left=h+"px"),c&&Rc(this,{left:h,top:g,right:h+b.offsetWidth,bottom:g+b.offsetHeight})},triggerOnKeyDown:od(uf),triggerOnKeyPress:od(xf),triggerOnKeyUp:wf,triggerOnMouseDown:od(zf),execCommand:function(a){if(Mh.hasOwnProperty(a))return Mh[a].call(null,this)},triggerElectric:od(function(a){Vf(this,a)}),findPosH:function(a,b,c,d){var e=this,f=1;b<0&&(f=-1,b=-b);for(var g=Q(this.doc,a),h=0;h0&&h(c.charAt(d-1));)--d;for(;e.5)&&xc(this),Ea(this,"refresh",this)}),swapDoc:od(function(a){var b=this.doc;return b.cm=null,Yd(this,a),fc(this),this.display.input.reset(),Vc(this,a.scrollLeft,a.scrollTop),this.curOp.forceScroll=!0,yb(this,"swapDoc",this,b),b}),getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},Ia(a),a.registerHelper=function(b,d,e){c.hasOwnProperty(b)||(c[b]=a[b]={_global:[]}),c[b][d]=e},a.registerGlobalHelper=function(b,d,e,f){a.registerHelper(b,d,f),c[b]._global.push({pred:e,val:f})}},Zh=function(a){this.cm=a,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new Ig,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};Zh.prototype.init=function(a){function b(a){if(!Fa(e,a)){if(e.somethingSelected())Sf({lineWise:!1,text:e.getSelections()}),"cut"==a.type&&e.replaceSelection("",null,"cut");else{if(!e.options.lineWiseCopyCut)return;var b=Wf(e);Sf({lineWise:!0,text:b.text}),"cut"==a.type&&e.operation(function(){e.setSelections(b.ranges,0,Ng),e.replaceSelection("",null,"cut")})}if(a.clipboardData){a.clipboardData.clearData();var c=Xh.text.join("\n");if(a.clipboardData.setData("Text",c),a.clipboardData.getData("Text")==c)return void a.preventDefault()}var g=Yf(),h=g.firstChild;e.display.lineSpace.insertBefore(g,e.display.lineSpace.firstChild),h.value=Xh.text.join("\n");var i=document.activeElement;Hg(h),setTimeout(function(){e.display.lineSpace.removeChild(g),i.focus(),i==f&&d.showPrimarySelection()},50)}}var c=this,d=this,e=d.cm,f=d.div=a.lineDiv;Xf(f,e.options.spellcheck),Yg(f,"paste",function(a){Fa(e,a)||Uf(a,e)||og<=11&&setTimeout(nd(e,function(){return c.updateFromDOM()}),20)}),Yg(f,"compositionstart",function(a){c.composing={data:a.data,done:!1}}),Yg(f,"compositionupdate",function(a){c.composing||(c.composing={data:a.data,done:!1})}),Yg(f,"compositionend",function(a){c.composing&&(a.data!=c.composing.data&&c.readFromDOMSoon(),c.composing.done=!0)}),Yg(f,"touchstart",function(){return d.forceCompositionEnd()}),Yg(f,"input",function(){c.composing||c.readFromDOMSoon()}),Yg(f,"copy",b),Yg(f,"cut",b)},Zh.prototype.prepareSelection=function(){var a=Bc(this.cm,!1);return a.focus=this.cm.state.focused,a},Zh.prototype.showSelection=function(a,b){a&&this.cm.display.view.length&&((a.focus||b)&&this.showPrimarySelection(),this.showMultipleSelections(a))},Zh.prototype.showPrimarySelection=function(){var a=window.getSelection(),b=this.cm,c=b.doc.sel.primary(),d=c.from(),e=c.to();if(b.display.viewTo==b.display.viewFrom||d.line>=b.display.viewTo||e.line=b.display.viewFrom&&_f(b,d)||{node:h[0].measure.map[2],offset:0},j=e.linea.firstLine()&&(d=J(d.line-1,B(a.doc,d.line-1).length)),e.ch==B(a.doc,e.line).text.length&&e.lineb.viewTo-1)return!1;var f,g,h;d.line==b.viewFrom||0==(f=zc(a,d.line))?(g=F(b.view[0].line),h=b.view[0].node):(g=F(b.view[f].line),h=b.view[f-1].node.nextSibling);var i,j,k=zc(a,e.line);if(k==b.view.length-1?(i=b.viewTo-1,j=b.lineDiv.lastChild):(i=F(b.view[k+1].line)-1,j=b.view[k+1].node.previousSibling),!h)return!1;for(var l=a.doc.splitLines(cg(a,h,j,g,i)),m=C(a.doc,J(g,0),J(i,B(a.doc,i).text.length));l.length>1&&m.length>1;)if(p(l)==p(m))l.pop(),m.pop(),i--;else{if(l[0]!=m[0])break;l.shift(),m.shift(),g++}for(var n=0,o=0,q=l[0],r=m[0],s=Math.min(q.length,r.length);nd.ch&&t.charCodeAt(t.length-o-1)==u.charCodeAt(u.length-o-1);)n--,o++;l[l.length-1]=t.slice(0,t.length-o).replace(/^\u200b+/,""),l[0]=l[0].slice(n).replace(/\u200b+$/,"");var w=J(g,n),x=J(i,m.length?p(m).length-o:0);return l.length>1||l[0]||K(w,x)?(Je(a.doc,l,w,x,"+input"),!0):void 0},Zh.prototype.ensurePolled=function(){this.forceCompositionEnd()},Zh.prototype.reset=function(){this.forceCompositionEnd()},Zh.prototype.forceCompositionEnd=function(){this.composing&&(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},Zh.prototype.readFromDOMSoon=function(){var a=this;null==this.readDOMTimeout&&(this.readDOMTimeout=setTimeout(function(){if(a.readDOMTimeout=null,a.composing){if(!a.composing.done)return;a.composing=null}a.updateFromDOM()},80))},Zh.prototype.updateFromDOM=function(){var a=this;!this.cm.isReadOnly()&&this.pollContent()||md(this.cm,function(){return qd(a.cm)})},Zh.prototype.setUneditable=function(a){a.contentEditable="false"},Zh.prototype.onKeyPress=function(a){0!=a.charCode&&(a.preventDefault(),this.cm.isReadOnly()||nd(this.cm,Tf)(this.cm,String.fromCharCode(null==a.charCode?a.keyCode:a.charCode),0))},Zh.prototype.readOnlyChanged=function(a){this.div.contentEditable=String("nocursor"!=a)},Zh.prototype.onContextMenu=function(){},Zh.prototype.resetPosition=function(){},Zh.prototype.needsContentAttribute=!0;var $h=function(a){this.cm=a,this.prevInput="",this.pollingFast=!1,this.polling=new Ig,this.hasSelection=!1,this.composing=null};$h.prototype.init=function(a){function b(a){if(!Fa(e,a)){if(e.somethingSelected())Sf({lineWise:!1,text:e.getSelections()});else{if(!e.options.lineWiseCopyCut)return;var b=Wf(e);Sf({lineWise:!0,text:b.text}),"cut"==a.type?e.setSelections(b.ranges,null,Ng):(d.prevInput="",g.value=b.text.join("\n"),Hg(g))}"cut"==a.type&&(e.state.cutIncoming=!0)}}var c=this,d=this,e=this.cm,f=this.wrapper=Yf(),g=this.textarea=f.firstChild;a.wrapper.insertBefore(f,a.wrapper.firstChild),wg&&(g.style.width="0px"),Yg(g,"input",function(){ng&&og>=9&&c.hasSelection&&(c.hasSelection=null),d.poll()}),Yg(g,"paste",function(a){Fa(e,a)||Uf(a,e)||(e.state.pasteIncoming=!0,d.fastPoll())}),Yg(g,"cut",b),Yg(g,"copy",b),Yg(a.scroller,"paste",function(b){Nb(a,b)||Fa(e,b)||(e.state.pasteIncoming=!0,d.focus())}),Yg(a.lineSpace,"selectstart",function(b){Nb(a,b)||Ja(b)}),Yg(g,"compositionstart",function(){var a=e.getCursor("from");d.composing&&d.composing.range.clear(),d.composing={start:a,range:e.markText(a,e.getCursor("to"),{className:"CodeMirror-composing"})}}),Yg(g,"compositionend",function(){d.composing&&(d.poll(),d.composing.range.clear(),d.composing=null)})},$h.prototype.prepareSelection=function(){var a=this.cm,b=a.display,c=a.doc,d=Bc(a);if(a.options.moveInputWithCursor){var e=lc(a,c.sel.primary().head,"div"),f=b.wrapper.getBoundingClientRect(),g=b.lineDiv.getBoundingClientRect();d.teTop=Math.max(0,Math.min(b.wrapper.clientHeight-10,e.top+g.top-f.top)),d.teLeft=Math.max(0,Math.min(b.wrapper.clientWidth-10,e.left+g.left-f.left))}return d},$h.prototype.showSelection=function(a){var b=this.cm,d=b.display;c(d.cursorDiv,a.cursors),c(d.selectionDiv,a.selection),null!=a.teTop&&(this.wrapper.style.top=a.teTop+"px",this.wrapper.style.left=a.teLeft+"px")},$h.prototype.reset=function(a){if(!this.contextMenuPending&&!this.composing){var b=this.cm;if(b.somethingSelected()){this.prevInput="";var c=b.getSelection();this.textarea.value=c,b.state.focused&&Hg(this.textarea),ng&&og>=9&&(this.hasSelection=c)}else a||(this.prevInput=this.textarea.value="",ng&&og>=9&&(this.hasSelection=null))}},$h.prototype.getField=function(){return this.textarea},$h.prototype.supportsTouch=function(){return!1},$h.prototype.focus=function(){if("nocursor"!=this.cm.options.readOnly&&(!yg||g()!=this.textarea))try{this.textarea.focus()}catch(a){}},$h.prototype.blur=function(){this.textarea.blur()},$h.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},$h.prototype.receivedFocus=function(){this.slowPoll()},$h.prototype.slowPoll=function(){var a=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,function(){a.poll(),a.cm.state.focused&&a.slowPoll()})},$h.prototype.fastPoll=function(){function a(){var d=c.poll();d||b?(c.pollingFast=!1,c.slowPoll()):(b=!0,c.polling.set(60,a))}var b=!1,c=this;c.pollingFast=!0,c.polling.set(20,a)},$h.prototype.poll=function(){var a=this,b=this.cm,c=this.textarea,d=this.prevInput;if(this.contextMenuPending||!b.state.focused||_g(c)&&!d&&!this.composing||b.isReadOnly()||b.options.disableInput||b.state.keySeq)return!1;var e=c.value;if(e==d&&!b.somethingSelected())return!1;if(ng&&og>=9&&this.hasSelection===e||zg&&/[\uf700-\uf7ff]/.test(e))return b.display.input.reset(),!1;if(b.doc.sel==b.display.selForContextMenu){var f=e.charCodeAt(0);if(8203!=f||d||(d="\u200b"),8666==f)return this.reset(),this.cm.execCommand("undo")}for(var g=0,h=Math.min(d.length,e.length);g1e3||e.indexOf("\n")>-1?c.value=a.prevInput="":a.prevInput=e,a.composing&&(a.composing.range.clear(),a.composing.range=b.markText(a.composing.start,b.getCursor("to"),{className:"CodeMirror-composing"}))}),!0},$h.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},$h.prototype.onKeyPress=function(){ng&&og>=9&&(this.hasSelection=null),this.fastPoll()},$h.prototype.onContextMenu=function(a){function b(){if(null!=g.selectionStart){var a=e.somethingSelected(),b="\u200b"+(a?g.value:"");g.value="\u21da",g.value=b,d.prevInput=a?"":"\u200b",g.selectionStart=1,g.selectionEnd=b.length,f.selForContextMenu=e.doc.sel}}function c(){if(d.contextMenuPending=!1,d.wrapper.style.cssText=l,g.style.cssText=k,ng&&og<9&&f.scrollbars.setScrollTop(f.scroller.scrollTop=i),null!=g.selectionStart){(!ng||ng&&og<9)&&b();var a=0,c=function(){f.selForContextMenu==e.doc.sel&&0==g.selectionStart&&g.selectionEnd>0&&"\u200b"==d.prevInput?nd(e,Be)(e):a++<10?f.detectingSelectAll=setTimeout(c,500):(f.selForContextMenu=null,f.input.reset())};f.detectingSelectAll=setTimeout(c,200)}}var d=this,e=d.cm,f=e.display,g=d.textarea,h=yc(e,a),i=f.scroller.scrollTop;if(h&&!sg){var j=e.options.resetSelectionOnContextMenu;j&&e.doc.sel.contains(h)==-1&&nd(e,te)(e.doc,Nd(h),Ng);var k=g.style.cssText,l=d.wrapper.style.cssText;d.wrapper.style.cssText="position: absolute";var m=d.wrapper.getBoundingClientRect();g.style.cssText="position: absolute; width: 30px; height: 30px;\n top: "+(a.clientY-m.top-5)+"px; left: "+(a.clientX-m.left-5)+"px;\n z-index: 1000; background: "+(ng?"rgba(255, 255, 255, .05)":"transparent")+";\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);";var n;if(pg&&(n=window.scrollY),f.input.focus(),pg&&window.scrollTo(null,n),f.input.reset(),e.somethingSelected()||(g.value=d.prevInput=" "),d.contextMenuPending=!0,f.selForContextMenu=e.doc.sel,clearTimeout(f.detectingSelectAll),ng&&og>=9&&b(),Fg){Ma(a);var o=function(){Da(window,"mouseup",o),setTimeout(c,20)};Yg(window,"mouseup",o)}else setTimeout(c,50)}},$h.prototype.readOnlyChanged=function(a){a||this.reset(),this.textarea.disabled="nocursor"==a},$h.prototype.setUneditable=function(){},$h.prototype.needsContentAttribute=!1,Lf(Pf),Yh(Pf);var _h="iter insert remove copy getEditor constructor".split(" ");for(var ai in Eh.prototype)Eh.prototype.hasOwnProperty(ai)&&m(_h,ai)<0&&(Pf.prototype[ai]=function(a){return function(){return a.apply(this.doc,arguments)}}(Eh.prototype[ai]));return Ia(Eh),Pf.inputStyles={textarea:$h,contenteditable:Zh},Pf.defineMode=function(a){Pf.defaults.mode||"null"==a||(Pf.defaults.mode=a),Sa.apply(this,arguments)},Pf.defineMIME=Ta,Pf.defineMode("null",function(){return{token:function(a){return a.skipToEnd()}}}),Pf.defineMIME("text/plain","null"),Pf.defineExtension=function(a,b){Pf.prototype[a]=b},Pf.defineDocExtension=function(a,b){Eh.prototype[a]=b},Pf.fromTextArea=fg,gg(Pf),Pf.version="5.29.1",Pf})},{}],60:[function(a,b,c){!function(d){"object"==typeof c&&"object"==typeof b?d(a("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],d):d(CodeMirror)}(function(a){"use strict";function b(a,b,c,d,e,f){this.indented=a,this.column=b,this.type=c,this.info=d,this.align=e,this.prev=f}function c(a,c,d,e){var f=a.indented;return a.context&&"statement"==a.context.type&&"statement"!=d&&(f=a.context.indented),a.context=new b(f,c,d,e,null,a.context)}function d(a){var b=a.context.type;return")"!=b&&"]"!=b&&"}"!=b||(a.indented=a.context.indented),a.context=a.context.prev}function e(a,b,c){return"variable"==b.prevToken||"type"==b.prevToken||(!!/\S(?:[^- ]>|[*\]])\s*$|\*$/.test(a.string.slice(0,c))||(!(!b.typeAtEndOfLine||a.column()!=a.indentation())||void 0))}function f(a){for(;;){if(!a||"top"==a.type)return!0;if("}"==a.type&&"namespace"!=a.prev.info)return!1;a=a.prev}}function g(a){for(var b={},c=a.split(" "),d=0;d!?|\/]/,H=i.isIdentifierChar||/[\w\$_\xa1-\uffff]/;return{startState:function(a){return{tokenize:null,context:new b((a||0)-p,0,"top",null,!1),indented:0, +startOfLine:!0,prevToken:null}},token:function(a,b){var g=b.context;if(a.sol()&&(null==g.align&&(g.align=!1),b.indented=a.indentation(),b.startOfLine=!0),a.eatSpace())return m(a,b),null;n=o=null;var h=(b.tokenize||j)(a,b);if("comment"==h||"meta"==h)return h;if(null==g.align&&(g.align=!0),";"==n||":"==n||","==n&&a.match(/^\s*(?:\/\/.*)?$/,!1))for(;"statement"==b.context.type;)d(b);else if("{"==n)c(b,a.column(),"}");else if("["==n)c(b,a.column(),"]");else if("("==n)c(b,a.column(),")");else if("}"==n){for(;"statement"==g.type;)g=d(b);for("}"==g.type&&(g=d(b));"statement"==g.type;)g=d(b)}else n==g.type?d(b):A&&(("}"==g.type||"top"==g.type)&&";"!=n||"statement"==g.type&&"newstatement"==n)&&c(b,a.column(),"statement",a.current());if("variable"==h&&("def"==b.prevToken||i.typeFirstDefinitions&&e(a,b,a.start)&&f(b.context)&&a.match(/^\s*\(/,!1))&&(h="def"),y.token){var k=y.token(a,b,h);void 0!==k&&(h=k)}return"def"==h&&i.styleDefs===!1&&(h="variable"),b.startOfLine=!1,b.prevToken=o?"def":h||n,m(a,b),h},indent:function(b,c){if(b.tokenize!=j&&null!=b.tokenize||b.typeAtEndOfLine)return a.Pass;var d=b.context,e=c&&c.charAt(0);if("statement"==d.type&&"}"==e&&(d=d.prev),i.dontIndentStatements)for(;"statement"==d.type&&i.dontIndentStatements.test(d.info);)d=d.prev;if(y.indent){var f=y.indent(b,d,c);if("number"==typeof f)return f}var g=e==d.type,h=d.prev&&"switch"==d.prev.info;if(i.allmanIndentation&&/[{(]/.test(e)){for(;"top"!=d.type&&"}"!=d.type;)d=d.prev;return d.indented}return"statement"==d.type?d.indented+("{"==e?0:q):!d.align||r&&")"==d.type?")"!=d.type||g?d.indented+(g?0:p)+(g||!h||/^(?:case|default)\b/.test(c)?0:p):d.indented+q:d.column+(g?0:1)},electricInput:B?/^\s*(?:case .*?:|default:|\{\}?|\})$/:/^\s*[{}]$/,blockCommentStart:"/*",blockCommentEnd:"*/",lineComment:"//",fold:"brace"}});var t="auto if break case register continue return default do sizeof static else struct switch extern typedef union for goto while enum const volatile",u="int long char short double float unsigned signed void size_t ptrdiff_t";p(["text/x-csrc","text/x-c","text/x-chdr"],{name:"clike",keywords:g(t),types:g(u+" bool _Complex _Bool float_t double_t intptr_t intmax_t int8_t int16_t int32_t int64_t uintptr_t uintmax_t uint8_t uint16_t uint32_t uint64_t"),blockKeywords:g("case do else for if switch while struct"),defKeywords:g("struct"),typeFirstDefinitions:!0,atoms:g("null true false"),hooks:{"#":i,"*":j},modeProps:{fold:["brace","include"]}}),p(["text/x-c++src","text/x-c++hdr"],{name:"clike",keywords:g(t+" asm dynamic_cast namespace reinterpret_cast try explicit new static_cast typeid catch operator template typename class friend private this using const_cast inline public throw virtual delete mutable protected alignas alignof constexpr decltype nullptr noexcept thread_local final static_assert override"),types:g(u+" bool wchar_t"),blockKeywords:g("catch class do else finally for if struct switch try while"),defKeywords:g("class namespace struct enum union"),typeFirstDefinitions:!0,atoms:g("true false null"),dontIndentStatements:/^template$/,isIdentifierChar:/[\w\$_~\xa1-\uffff]/,hooks:{"#":i,"*":j,u:l,U:l,L:l,R:l,0:k,1:k,2:k,3:k,4:k,5:k,6:k,7:k,8:k,9:k,token:function(a,b,c){if("variable"==c&&"("==a.peek()&&(";"==b.prevToken||null==b.prevToken||"}"==b.prevToken)&&m(a.current()))return"def"}},namespaceSeparator:"::",modeProps:{fold:["brace","include"]}}),p("text/x-java",{name:"clike",keywords:g("abstract assert break case catch class const continue default do else enum extends final finally float for goto if implements import instanceof interface native new package private protected public return static strictfp super switch synchronized this throw throws transient try volatile while @interface"),types:g("byte short int long float double boolean char void Boolean Byte Character Double Float Integer Long Number Object Short String StringBuffer StringBuilder Void"),blockKeywords:g("catch class do else finally for if switch try while"),defKeywords:g("class interface package enum @interface"),typeFirstDefinitions:!0,atoms:g("true false null"),number:/^(?:0x[a-f\d_]+|0b[01_]+|(?:[\d_]+\.?\d*|\.\d+)(?:e[-+]?[\d_]+)?)(u|ll?|l|f)?/i,hooks:{"@":function(a){return!a.match("interface",!1)&&(a.eatWhile(/[\w\$_]/),"meta")}},modeProps:{fold:["brace","import"]}}),p("text/x-csharp",{name:"clike",keywords:g("abstract as async await base break case catch checked class const continue default delegate do else enum event explicit extern finally fixed for foreach goto if implicit in interface internal is lock namespace new operator out override params private protected public readonly ref return sealed sizeof stackalloc static struct switch this throw try typeof unchecked unsafe using virtual void volatile while add alias ascending descending dynamic from get global group into join let orderby partial remove select set value var yield"),types:g("Action Boolean Byte Char DateTime DateTimeOffset Decimal Double Func Guid Int16 Int32 Int64 Object SByte Single String Task TimeSpan UInt16 UInt32 UInt64 bool byte char decimal double short int long object sbyte float string ushort uint ulong"),blockKeywords:g("catch class do else finally for foreach if struct switch try while"),defKeywords:g("class interface namespace struct var"),typeFirstDefinitions:!0,atoms:g("true false null"),hooks:{"@":function(a,b){return a.eat('"')?(b.tokenize=n,n(a,b)):(a.eatWhile(/[\w\$_]/),"meta")}}}),p("text/x-scala",{name:"clike",keywords:g("abstract case catch class def do else extends final finally for forSome if implicit import lazy match new null object override package private protected return sealed super this throw trait try type val var while with yield _ assert assume require print println printf readLine readBoolean readByte readShort readChar readInt readLong readFloat readDouble"),types:g("AnyVal App Application Array BufferedIterator BigDecimal BigInt Char Console Either Enumeration Equiv Error Exception Fractional Function IndexedSeq Int Integral Iterable Iterator List Map Numeric Nil NotNull Option Ordered Ordering PartialFunction PartialOrdering Product Proxy Range Responder Seq Serializable Set Specializable Stream StringBuilder StringContext Symbol Throwable Traversable TraversableOnce Tuple Unit Vector Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable Compiler Double Exception Float Integer Long Math Number Object Package Pair Process Runtime Runnable SecurityManager Short StackTraceElement StrictMath String StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void"),multiLineStrings:!0,blockKeywords:g("catch class enum do else finally for forSome if match switch try while"),defKeywords:g("class enum def object package trait type val var"),atoms:g("true false null"),indentStatements:!1,indentSwitch:!1,isOperatorChar:/[+\-*&%=<>!?|\/#:@]/,hooks:{"@":function(a){return a.eatWhile(/[\w\$_]/),"meta"},'"':function(a,b){return!!a.match('""')&&(b.tokenize=q,b.tokenize(a,b))},"'":function(a){return a.eatWhile(/[\w\$_\xa1-\uffff]/),"atom"},"=":function(a,c){var d=c.context;return!("}"!=d.type||!d.align||!a.eat(">"))&&(c.context=new b(d.indented,d.column,d.type,d.info,null,d.prev),"operator")}},modeProps:{closeBrackets:{triples:'"'}}}),p("text/x-kotlin",{name:"clike",keywords:g("package as typealias class interface this super val var fun for is in This throw return break continue object if else while do try when !in !is as? file import where by get set abstract enum open inner override private public internal protected catch finally out final vararg reified dynamic companion constructor init sealed field property receiver param sparam lateinit data inline noinline tailrec external annotation crossinline const operator infix suspend"),types:g("Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable Compiler Double Exception Float Integer Long Math Number Object Package Pair Process Runtime Runnable SecurityManager Short StackTraceElement StrictMath String StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void"),intendSwitch:!1,indentStatements:!1,multiLineStrings:!0,number:/^(?:0x[a-f\d_]+|0b[01_]+|(?:[\d_]+\.?\d*|\.\d+)(?:e[-+]?[\d_]+)?)(u|ll?|l|f)?/i,blockKeywords:g("catch class do else finally for if where try while enum"),defKeywords:g("class val var object package interface fun"),atoms:g("true false null this"),hooks:{'"':function(a,b){return b.tokenize=r(a.match('""')),b.tokenize(a,b)}},modeProps:{closeBrackets:{triples:'"'}}}),p(["x-shader/x-vertex","x-shader/x-fragment"],{name:"clike",keywords:g("sampler1D sampler2D sampler3D samplerCube sampler1DShadow sampler2DShadow const attribute uniform varying break continue discard return for while do if else struct in out inout"),types:g("float int bool void vec2 vec3 vec4 ivec2 ivec3 ivec4 bvec2 bvec3 bvec4 mat2 mat3 mat4"),blockKeywords:g("for while do if else struct"),builtin:g("radians degrees sin cos tan asin acos atan pow exp log exp2 sqrt inversesqrt abs sign floor ceil fract mod min max clamp mix step smoothstep length distance dot cross normalize ftransform faceforward reflect refract matrixCompMult lessThan lessThanEqual greaterThan greaterThanEqual equal notEqual any all not texture1D texture1DProj texture1DLod texture1DProjLod texture2D texture2DProj texture2DLod texture2DProjLod texture3D texture3DProj texture3DLod texture3DProjLod textureCube textureCubeLod shadow1D shadow2D shadow1DProj shadow2DProj shadow1DLod shadow2DLod shadow1DProjLod shadow2DProjLod dFdx dFdy fwidth noise1 noise2 noise3 noise4"),atoms:g("true false gl_FragColor gl_SecondaryColor gl_Normal gl_Vertex gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 gl_FogCoord gl_PointCoord gl_Position gl_PointSize gl_ClipVertex gl_FrontColor gl_BackColor gl_FrontSecondaryColor gl_BackSecondaryColor gl_TexCoord gl_FogFragCoord gl_FragCoord gl_FrontFacing gl_FragData gl_FragDepth gl_ModelViewMatrix gl_ProjectionMatrix gl_ModelViewProjectionMatrix gl_TextureMatrix gl_NormalMatrix gl_ModelViewMatrixInverse gl_ProjectionMatrixInverse gl_ModelViewProjectionMatrixInverse gl_TexureMatrixTranspose gl_ModelViewMatrixInverseTranspose gl_ProjectionMatrixInverseTranspose gl_ModelViewProjectionMatrixInverseTranspose gl_TextureMatrixInverseTranspose gl_NormalScale gl_DepthRange gl_ClipPlane gl_Point gl_FrontMaterial gl_BackMaterial gl_LightSource gl_LightModel gl_FrontLightModelProduct gl_BackLightModelProduct gl_TextureColor gl_EyePlaneS gl_EyePlaneT gl_EyePlaneR gl_EyePlaneQ gl_FogParameters gl_MaxLights gl_MaxClipPlanes gl_MaxTextureUnits gl_MaxTextureCoords gl_MaxVertexAttribs gl_MaxVertexUniformComponents gl_MaxVaryingFloats gl_MaxVertexTextureImageUnits gl_MaxTextureImageUnits gl_MaxFragmentUniformComponents gl_MaxCombineTextureImageUnits gl_MaxDrawBuffers"),indentSwitch:!1,hooks:{"#":i},modeProps:{fold:["brace","include"]}}),p("text/x-nesc",{name:"clike",keywords:g(t+"as atomic async call command component components configuration event generic implementation includes interface module new norace nx_struct nx_union post provides signal task uses abstract extends"),types:g(u),blockKeywords:g("case do else for if switch while struct"),atoms:g("null true false"),hooks:{"#":i},modeProps:{fold:["brace","include"]}}),p("text/x-objectivec",{name:"clike",keywords:g(t+"inline restrict _Bool _Complex _Imaginary BOOL Class bycopy byref id IMP in inout nil oneway out Protocol SEL self super atomic nonatomic retain copy readwrite readonly"),types:g(u),atoms:g("YES NO NULL NILL ON OFF true false"),hooks:{"@":function(a){return a.eatWhile(/[\w\$]/),"keyword"},"#":i,indent:function(a,b,c){if("statement"==b.type&&/^@\w/.test(c))return b.indented}},modeProps:{fold:"brace"}}),p("text/x-squirrel",{name:"clike",keywords:g("base break clone continue const default delete enum extends function in class foreach local resume return this throw typeof yield constructor instanceof static"),types:g(u),blockKeywords:g("case catch class else for foreach if switch try while"),defKeywords:g("function local class"),typeFirstDefinitions:!0,atoms:g("true false null"),hooks:{"#":i},modeProps:{fold:["brace","include"]}});var v=null;p("text/x-ceylon",{name:"clike",keywords:g("abstracts alias assembly assert assign break case catch class continue dynamic else exists extends finally for function given if import in interface is let module new nonempty object of out outer package return satisfies super switch then this throw try value void while"),types:function(a){var b=a.charAt(0);return b===b.toUpperCase()&&b!==b.toLowerCase()},blockKeywords:g("case catch class dynamic else finally for function if interface module new object switch try while"),defKeywords:g("class dynamic function interface module object package value"),builtin:g("abstract actual aliased annotation by default deprecated doc final formal late license native optional sealed see serializable shared suppressWarnings tagged throws variable"),isPunctuationChar:/[\[\]{}\(\),;\:\.`]/,isOperatorChar:/[+\-*&%=<>!?|^~:\/]/,numberStart:/[\d#$]/,number:/^(?:#[\da-fA-F_]+|\$[01_]+|[\d_]+[kMGTPmunpf]?|[\d_]+\.[\d_]+(?:[eE][-+]?\d+|[kMGTPmunpf]|)|)/i,multiLineStrings:!0,typeFirstDefinitions:!0,atoms:g("true false null larger smaller equal empty finished"),indentSwitch:!1,styleDefs:!1,hooks:{"@":function(a){return a.eatWhile(/[\w\$_]/),"meta"},'"':function(a,b){return b.tokenize=s(a.match('""')?"triple":"single"),b.tokenize(a,b)},"`":function(a,b){return!(!v||!a.match("`"))&&(b.tokenize=v,v=null,b.tokenize(a,b))},"'":function(a){return a.eatWhile(/[\w\$_\xa1-\uffff]/),"atom"},token:function(a,b,c){if(("variable"==c||"type"==c)&&"."==b.prevToken)return"variable-2"}},modeProps:{fold:["brace","import"],closeBrackets:{triples:'"'}}})})},{"../../lib/codemirror":59}],61:[function(a,b,c){!function(d){"object"==typeof c&&"object"==typeof b?d(a("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],d):d(CodeMirror)}(function(a){"use strict";function b(a){for(var b={},c=0;c*\/]/.test(c)?d(null,"select-op"):"."==c&&a.match(/^-?[_a-z][_a-z0-9-]*/i)?d("qualifier","qualifier"):/[:;{}\[\]\(\)]/.test(c)?d(null,c):"u"==c&&a.match(/rl(-prefix)?\(/)||"d"==c&&a.match("omain(")||"r"==c&&a.match("egexp(")?(a.backUp(1),b.tokenize=g,d("property","word")):/[\w\\\-]/.test(c)?(a.eatWhile(/[\w\\\-]/),d("property","word")):d(null,null):/[\d.]/.test(a.peek())?(a.eatWhile(/[\w.%]/),d("number","unit")):a.match(/^-[\w\\\-]+/)?(a.eatWhile(/[\w\\\-]/),a.match(/^\s*:/,!1)?d("variable-2","variable-definition"):d("variable-2","variable")):a.match(/^\w+-/)?d("meta","meta"):void 0}function f(a){return function(b,c){for(var e,f=!1;null!=(e=b.next());){if(e==a&&!f){")"==a&&b.backUp(1);break}f=!f&&"\\"==e}return(e==a||!f&&")"!=a)&&(c.tokenize=null),d("string","string")}}function g(a,b){return a.next(),a.match(/\s*[\"\')]/,!1)?b.tokenize=null:b.tokenize=f(")"),d(null,"(")}function h(a,b,c){this.type=a,this.indent=b,this.prev=c}function i(a,b,c,d){return a.context=new h(c,b.indentation()+(d===!1?0:q),a.context),c}function j(a){return a.context.prev&&(a.context=a.context.prev),a.context.type}function k(a,b,c){return F[c.context.type](a,b,c)}function l(a,b,c,d){for(var e=d||1;e>0;e--)c.context=c.context.prev;return k(a,b,c)}function m(a){var b=a.current().toLowerCase();p=B.hasOwnProperty(b)?"atom":A.hasOwnProperty(b)?"keyword":"variable"}var n=c.inline;c.propertyKeywords||(c=a.resolveMode("text/css"));var o,p,q=b.indentUnit,r=c.tokenHooks,s=c.documentTypes||{},t=c.mediaTypes||{},u=c.mediaFeatures||{},v=c.mediaValueKeywords||{},w=c.propertyKeywords||{},x=c.nonStandardPropertyKeywords||{},y=c.fontProperties||{},z=c.counterDescriptors||{},A=c.colorKeywords||{},B=c.valueKeywords||{},C=c.allowNested,D=c.lineComment,E=c.supportsAtComponent===!0,F={};return F.top=function(a,b,c){if("{"==a)return i(c,b,"block");if("}"==a&&c.context.prev)return j(c);if(E&&/@component/.test(a))return i(c,b,"atComponentBlock");if(/^@(-moz-)?document$/.test(a))return i(c,b,"documentTypes");if(/^@(media|supports|(-moz-)?document|import)$/.test(a))return i(c,b,"atBlock");if(/^@(font-face|counter-style)/.test(a))return c.stateArg=a,"restricted_atBlock_before";if(/^@(-(moz|ms|o|webkit)-)?keyframes$/.test(a))return"keyframes";if(a&&"@"==a.charAt(0))return i(c,b,"at");if("hash"==a)p="builtin";else if("word"==a)p="tag";else{if("variable-definition"==a)return"maybeprop";if("interpolation"==a)return i(c,b,"interpolation");if(":"==a)return"pseudo";if(C&&"("==a)return i(c,b,"parens")}return c.context.type},F.block=function(a,b,c){if("word"==a){var d=b.current().toLowerCase();return w.hasOwnProperty(d)?(p="property","maybeprop"):x.hasOwnProperty(d)?(p="string-2","maybeprop"):C?(p=b.match(/^\s*:(?:\s|$)/,!1)?"property":"tag","block"):(p+=" error","maybeprop")}return"meta"==a?"block":C||"hash"!=a&&"qualifier"!=a?F.top(a,b,c):(p="error","block")},F.maybeprop=function(a,b,c){return":"==a?i(c,b,"prop"):k(a,b,c)},F.prop=function(a,b,c){if(";"==a)return j(c);if("{"==a&&C)return i(c,b,"propBlock");if("}"==a||"{"==a)return l(a,b,c);if("("==a)return i(c,b,"parens");if("hash"!=a||/^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/.test(b.current())){if("word"==a)m(b);else if("interpolation"==a)return i(c,b,"interpolation")}else p+=" error";return"prop"},F.propBlock=function(a,b,c){return"}"==a?j(c):"word"==a?(p="property","maybeprop"):c.context.type},F.parens=function(a,b,c){return"{"==a||"}"==a?l(a,b,c):")"==a?j(c):"("==a?i(c,b,"parens"):"interpolation"==a?i(c,b,"interpolation"):("word"==a&&m(b),"parens")},F.pseudo=function(a,b,c){return"meta"==a?"pseudo":"word"==a?(p="variable-3",c.context.type):k(a,b,c)},F.documentTypes=function(a,b,c){return"word"==a&&s.hasOwnProperty(b.current())?(p="tag",c.context.type):F.atBlock(a,b,c)},F.atBlock=function(a,b,c){if("("==a)return i(c,b,"atBlock_parens");if("}"==a||";"==a)return l(a,b,c);if("{"==a)return j(c)&&i(c,b,C?"block":"top");if("interpolation"==a)return i(c,b,"interpolation");if("word"==a){var d=b.current().toLowerCase();p="only"==d||"not"==d||"and"==d||"or"==d?"keyword":t.hasOwnProperty(d)?"attribute":u.hasOwnProperty(d)?"property":v.hasOwnProperty(d)?"keyword":w.hasOwnProperty(d)?"property":x.hasOwnProperty(d)?"string-2":B.hasOwnProperty(d)?"atom":A.hasOwnProperty(d)?"keyword":"error"}return c.context.type},F.atComponentBlock=function(a,b,c){return"}"==a?l(a,b,c):"{"==a?j(c)&&i(c,b,C?"block":"top",!1):("word"==a&&(p="error"),c.context.type)},F.atBlock_parens=function(a,b,c){return")"==a?j(c):"{"==a||"}"==a?l(a,b,c,2):F.atBlock(a,b,c)},F.restricted_atBlock_before=function(a,b,c){return"{"==a?i(c,b,"restricted_atBlock"):"word"==a&&"@counter-style"==c.stateArg?(p="variable","restricted_atBlock_before"):k(a,b,c)},F.restricted_atBlock=function(a,b,c){return"}"==a?(c.stateArg=null,j(c)):"word"==a?(p="@font-face"==c.stateArg&&!y.hasOwnProperty(b.current().toLowerCase())||"@counter-style"==c.stateArg&&!z.hasOwnProperty(b.current().toLowerCase())?"error":"property","maybeprop"):"restricted_atBlock"},F.keyframes=function(a,b,c){return"word"==a?(p="variable","keyframes"):"{"==a?i(c,b,"top"):k(a,b,c)},F.at=function(a,b,c){return";"==a?j(c):"{"==a||"}"==a?l(a,b,c):("word"==a?p="tag":"hash"==a&&(p="builtin"),"at")},F.interpolation=function(a,b,c){return"}"==a?j(c):"{"==a||";"==a?l(a,b,c):("word"==a?p="variable":"variable"!=a&&"("!=a&&")"!=a&&(p="error"),"interpolation")},{startState:function(a){return{tokenize:null,state:n?"block":"top",stateArg:null,context:new h(n?"block":"top",a||0,null)}},token:function(a,b){if(!b.tokenize&&a.eatSpace())return null;var c=(b.tokenize||e)(a,b);return c&&"object"==typeof c&&(o=c[1],c=c[0]),p=c,"comment"!=o&&(b.state=F[b.state](o,a,b)),p},indent:function(a,b){var c=a.context,d=b&&b.charAt(0),e=c.indent;return"prop"!=c.type||"}"!=d&&")"!=d||(c=c.prev),c.prev&&("}"!=d||"block"!=c.type&&"top"!=c.type&&"interpolation"!=c.type&&"restricted_atBlock"!=c.type?(")"!=d||"parens"!=c.type&&"atBlock_parens"!=c.type)&&("{"!=d||"at"!=c.type&&"atBlock"!=c.type)||(e=Math.max(0,c.indent-q)):(c=c.prev,e=c.indent)),e},electricChars:"}",blockCommentStart:"/*",blockCommentEnd:"*/",lineComment:D,fold:"brace"}});var d=["domain","regexp","url","url-prefix"],e=b(d),f=["all","aural","braille","handheld","print","projection","screen","tty","tv","embossed"],g=b(f),h=["width","min-width","max-width","height","min-height","max-height","device-width","min-device-width","max-device-width","device-height","min-device-height","max-device-height","aspect-ratio","min-aspect-ratio","max-aspect-ratio","device-aspect-ratio","min-device-aspect-ratio","max-device-aspect-ratio","color","min-color","max-color","color-index","min-color-index","max-color-index","monochrome","min-monochrome","max-monochrome","resolution","min-resolution","max-resolution","scan","grid","orientation","device-pixel-ratio","min-device-pixel-ratio","max-device-pixel-ratio","pointer","any-pointer","hover","any-hover"],i=b(h),j=["landscape","portrait","none","coarse","fine","on-demand","hover","interlace","progressive"],k=b(j),l=["align-content","align-items","align-self","alignment-adjust","alignment-baseline","anchor-point","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","appearance","azimuth","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","baseline-shift","binding","bleed","bookmark-label","bookmark-level","bookmark-state","bookmark-target","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","color","color-profile","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","crop","cue","cue-after","cue-before","cursor","direction","display","dominant-baseline","drop-initial-after-adjust","drop-initial-after-align","drop-initial-before-adjust","drop-initial-before-align","drop-initial-size","drop-initial-value","elevation","empty-cells","fit","fit-position","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","float-offset","flow-from","flow-into","font","font-feature-settings","font-family","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-synthesis","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-weight","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-gap","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-gap","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","inline-box-align","justify-content","justify-items","justify-self","left","letter-spacing","line-break","line-height","line-stacking","line-stacking-ruby","line-stacking-shift","line-stacking-strategy","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","marquee-direction","marquee-loop","marquee-play-count","marquee-speed","marquee-style","max-height","max-width","min-height","min-width","move-to","nav-down","nav-index","nav-left","nav-right","nav-up","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-style","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","page-policy","pause","pause-after","pause-before","perspective","perspective-origin","pitch","pitch-range","place-content","place-items","place-self","play-during","position","presentation-level","punctuation-trim","quotes","region-break-after","region-break-before","region-break-inside","region-fragment","rendering-intent","resize","rest","rest-after","rest-before","richness","right","rotation","rotation-point","ruby-align","ruby-overhang","ruby-position","ruby-span","shape-image-threshold","shape-inside","shape-margin","shape-outside","size","speak","speak-as","speak-header","speak-numeral","speak-punctuation","speech-rate","stress","string-set","tab-size","table-layout","target","target-name","target-new","target-position","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-height","text-indent","text-justify","text-outline","text-overflow","text-shadow","text-size-adjust","text-space-collapse","text-transform","text-underline-position","text-wrap","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","user-select","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","z-index","clip-path","clip-rule","mask","enable-background","filter","flood-color","flood-opacity","lighting-color","stop-color","stop-opacity","pointer-events","color-interpolation","color-interpolation-filters","color-rendering","fill","fill-opacity","fill-rule","image-rendering","marker","marker-end","marker-mid","marker-start","shape-rendering","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","text-rendering","baseline-shift","dominant-baseline","glyph-orientation-horizontal","glyph-orientation-vertical","text-anchor","writing-mode"],m=b(l),n=["scrollbar-arrow-color","scrollbar-base-color","scrollbar-dark-shadow-color","scrollbar-face-color","scrollbar-highlight-color","scrollbar-shadow-color","scrollbar-3d-light-color","scrollbar-track-color","shape-inside","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","zoom"],o=b(n),p=["font-family","src","unicode-range","font-variant","font-feature-settings","font-stretch","font-weight","font-style"],q=b(p),r=["additive-symbols","fallback","negative","pad","prefix","range","speak-as","suffix","symbols","system"],s=b(r),t=["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"],u=b(t),v=["above","absolute","activeborder","additive","activecaption","afar","after-white-space","ahead","alias","all","all-scroll","alphabetic","alternate","always","amharic","amharic-abegede","antialiased","appworkspace","arabic-indic","armenian","asterisks","attr","auto","auto-flow","avoid","avoid-column","avoid-page","avoid-region","background","backwards","baseline","below","bidi-override","binary","bengali","blink","block","block-axis","bold","bolder","border","border-box","both","bottom","break","break-all","break-word","bullets","button","button-bevel","buttonface","buttonhighlight","buttonshadow","buttontext","calc","cambodian","capitalize","caps-lock-indicator","caption","captiontext","caret","cell","center","checkbox","circle","cjk-decimal","cjk-earthly-branch","cjk-heavenly-stem","cjk-ideographic","clear","clip","close-quote","col-resize","collapse","color","color-burn","color-dodge","column","column-reverse","compact","condensed","contain","content","contents","content-box","context-menu","continuous","copy","counter","counters","cover","crop","cross","crosshair","currentcolor","cursive","cyclic","darken","dashed","decimal","decimal-leading-zero","default","default-button","dense","destination-atop","destination-in","destination-out","destination-over","devanagari","difference","disc","discard","disclosure-closed","disclosure-open","document","dot-dash","dot-dot-dash","dotted","double","down","e-resize","ease","ease-in","ease-in-out","ease-out","element","ellipse","ellipsis","embed","end","ethiopic","ethiopic-abegede","ethiopic-abegede-am-et","ethiopic-abegede-gez","ethiopic-abegede-ti-er","ethiopic-abegede-ti-et","ethiopic-halehame-aa-er","ethiopic-halehame-aa-et","ethiopic-halehame-am-et","ethiopic-halehame-gez","ethiopic-halehame-om-et","ethiopic-halehame-sid-et","ethiopic-halehame-so-et","ethiopic-halehame-ti-er","ethiopic-halehame-ti-et","ethiopic-halehame-tig","ethiopic-numeric","ew-resize","exclusion","expanded","extends","extra-condensed","extra-expanded","fantasy","fast","fill","fixed","flat","flex","flex-end","flex-start","footnotes","forwards","from","geometricPrecision","georgian","graytext","grid","groove","gujarati","gurmukhi","hand","hangul","hangul-consonant","hard-light","hebrew","help","hidden","hide","higher","highlight","highlighttext","hiragana","hiragana-iroha","horizontal","hsl","hsla","hue","icon","ignore","inactiveborder","inactivecaption","inactivecaptiontext","infinite","infobackground","infotext","inherit","initial","inline","inline-axis","inline-block","inline-flex","inline-grid","inline-table","inset","inside","intrinsic","invert","italic","japanese-formal","japanese-informal","justify","kannada","katakana","katakana-iroha","keep-all","khmer","korean-hangul-formal","korean-hanja-formal","korean-hanja-informal","landscape","lao","large","larger","left","level","lighter","lighten","line-through","linear","linear-gradient","lines","list-item","listbox","listitem","local","logical","loud","lower","lower-alpha","lower-armenian","lower-greek","lower-hexadecimal","lower-latin","lower-norwegian","lower-roman","lowercase","ltr","luminosity","malayalam","match","matrix","matrix3d","media-controls-background","media-current-time-display","media-fullscreen-button","media-mute-button","media-play-button","media-return-to-realtime-button","media-rewind-button","media-seek-back-button","media-seek-forward-button","media-slider","media-sliderthumb","media-time-remaining-display","media-volume-slider","media-volume-slider-container","media-volume-sliderthumb","medium","menu","menulist","menulist-button","menulist-text","menulist-textfield","menutext","message-box","middle","min-intrinsic","mix","mongolian","monospace","move","multiple","multiply","myanmar","n-resize","narrower","ne-resize","nesw-resize","no-close-quote","no-drop","no-open-quote","no-repeat","none","normal","not-allowed","nowrap","ns-resize","numbers","numeric","nw-resize","nwse-resize","oblique","octal","opacity","open-quote","optimizeLegibility","optimizeSpeed","oriya","oromo","outset","outside","outside-shape","overlay","overline","padding","padding-box","painted","page","paused","persian","perspective","plus-darker","plus-lighter","pointer","polygon","portrait","pre","pre-line","pre-wrap","preserve-3d","progress","push-button","radial-gradient","radio","read-only","read-write","read-write-plaintext-only","rectangle","region","relative","repeat","repeating-linear-gradient","repeating-radial-gradient","repeat-x","repeat-y","reset","reverse","rgb","rgba","ridge","right","rotate","rotate3d","rotateX","rotateY","rotateZ","round","row","row-resize","row-reverse","rtl","run-in","running","s-resize","sans-serif","saturation","scale","scale3d","scaleX","scaleY","scaleZ","screen","scroll","scrollbar","scroll-position","se-resize","searchfield","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","self-start","self-end","semi-condensed","semi-expanded","separate","serif","show","sidama","simp-chinese-formal","simp-chinese-informal","single","skew","skewX","skewY","skip-white-space","slide","slider-horizontal","slider-vertical","sliderthumb-horizontal","sliderthumb-vertical","slow","small","small-caps","small-caption","smaller","soft-light","solid","somali","source-atop","source-in","source-out","source-over","space","space-around","space-between","space-evenly","spell-out","square","square-button","start","static","status-bar","stretch","stroke","sub","subpixel-antialiased","super","sw-resize","symbolic","symbols","system-ui","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","tamil","telugu","text","text-bottom","text-top","textarea","textfield","thai","thick","thin","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","tibetan","tigre","tigrinya-er","tigrinya-er-abegede","tigrinya-et","tigrinya-et-abegede","to","top","trad-chinese-formal","trad-chinese-informal","transform","translate","translate3d","translateX","translateY","translateZ","transparent","ultra-condensed","ultra-expanded","underline","unset","up","upper-alpha","upper-armenian","upper-greek","upper-hexadecimal","upper-latin","upper-norwegian","upper-roman","uppercase","urdu","url","var","vertical","vertical-text","visible","visibleFill","visiblePainted","visibleStroke","visual","w-resize","wait","wave","wider","window","windowframe","windowtext","words","wrap","wrap-reverse","x-large","x-small","xor","xx-large","xx-small"],w=b(v),x=d.concat(f).concat(h).concat(j).concat(l).concat(n).concat(t).concat(v); +a.registerHelper("hintWords","css",x),a.defineMIME("text/css",{documentTypes:e,mediaTypes:g,mediaFeatures:i,mediaValueKeywords:k,propertyKeywords:m,nonStandardPropertyKeywords:o,fontProperties:q,counterDescriptors:s,colorKeywords:u,valueKeywords:w,tokenHooks:{"/":function(a,b){return!!a.eat("*")&&(b.tokenize=c,c(a,b))}},name:"css"}),a.defineMIME("text/x-scss",{mediaTypes:g,mediaFeatures:i,mediaValueKeywords:k,propertyKeywords:m,nonStandardPropertyKeywords:o,colorKeywords:u,valueKeywords:w,fontProperties:q,allowNested:!0,lineComment:"//",tokenHooks:{"/":function(a,b){return a.eat("/")?(a.skipToEnd(),["comment","comment"]):a.eat("*")?(b.tokenize=c,c(a,b)):["operator","operator"]},":":function(a){return!!a.match(/\s*\{/,!1)&&[null,null]},$:function(a){return a.match(/^[\w-]+/),a.match(/^\s*:/,!1)?["variable-2","variable-definition"]:["variable-2","variable"]},"#":function(a){return!!a.eat("{")&&[null,"interpolation"]}},name:"css",helperType:"scss"}),a.defineMIME("text/x-less",{mediaTypes:g,mediaFeatures:i,mediaValueKeywords:k,propertyKeywords:m,nonStandardPropertyKeywords:o,colorKeywords:u,valueKeywords:w,fontProperties:q,allowNested:!0,lineComment:"//",tokenHooks:{"/":function(a,b){return a.eat("/")?(a.skipToEnd(),["comment","comment"]):a.eat("*")?(b.tokenize=c,c(a,b)):["operator","operator"]},"@":function(a){return a.eat("{")?[null,"interpolation"]:!a.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\b/,!1)&&(a.eatWhile(/[\w\\\-]/),a.match(/^\s*:/,!1)?["variable-2","variable-definition"]:["variable-2","variable"])},"&":function(){return["atom","atom"]}},name:"css",helperType:"less"}),a.defineMIME("text/x-gss",{documentTypes:e,mediaTypes:g,mediaFeatures:i,propertyKeywords:m,nonStandardPropertyKeywords:o,fontProperties:q,counterDescriptors:s,colorKeywords:u,valueKeywords:w,supportsAtComponent:!0,tokenHooks:{"/":function(a,b){return!!a.eat("*")&&(b.tokenize=c,c(a,b))}},name:"css",helperType:"gss"})})},{"../../lib/codemirror":59}],62:[function(a,b,c){!function(d){"object"==typeof c&&"object"==typeof b?d(a("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],d):d(CodeMirror)}(function(a){"use strict";a.defineMode("diff",function(){var a={"+":"positive","-":"negative","@":"meta"};return{token:function(b){var c=b.string.search(/[\t ]+?$/);if(!b.sol()||0===c)return b.skipToEnd(),("error "+(a[b.string.charAt(0)]||"")).replace(/ $/,"");var d=a[b.peek()]||b.skipToEnd();return c===-1?b.skipToEnd():b.pos=c,d}}}),a.defineMIME("text/x-diff","diff")})},{"../../lib/codemirror":59}],63:[function(a,b,c){!function(d){"object"==typeof c&&"object"==typeof b?d(a("../../lib/codemirror"),a("../markdown/markdown"),a("../../addon/mode/overlay")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","../markdown/markdown","../../addon/mode/overlay"],d):d(CodeMirror)}(function(a){"use strict";var b=/^((?:(?:aaas?|about|acap|adiumxtra|af[ps]|aim|apt|attachment|aw|beshare|bitcoin|bolo|callto|cap|chrome(?:-extension)?|cid|coap|com-eventbrite-attendee|content|crid|cvs|data|dav|dict|dlna-(?:playcontainer|playsingle)|dns|doi|dtn|dvb|ed2k|facetime|feed|file|finger|fish|ftp|geo|gg|git|gizmoproject|go|gopher|gtalk|h323|hcp|https?|iax|icap|icon|im|imap|info|ipn|ipp|irc[6s]?|iris(?:\.beep|\.lwz|\.xpc|\.xpcs)?|itms|jar|javascript|jms|keyparc|lastfm|ldaps?|magnet|mailto|maps|market|message|mid|mms|ms-help|msnim|msrps?|mtqp|mumble|mupdate|mvn|news|nfs|nih?|nntp|notes|oid|opaquelocktoken|palm|paparazzi|platform|pop|pres|proxy|psyc|query|res(?:ource)?|rmi|rsync|rtmp|rtsp|secondlife|service|session|sftp|sgn|shttp|sieve|sips?|skype|sm[bs]|snmp|soap\.beeps?|soldat|spotify|ssh|steam|svn|tag|teamspeak|tel(?:net)?|tftp|things|thismessage|tip|tn3270|tv|udp|unreal|urn|ut2004|vemmi|ventrilo|view-source|webcal|wss?|wtai|wyciwyg|xcon(?:-userid)?|xfire|xmlrpc\.beeps?|xmpp|xri|ymsgr|z39\.50[rs]?):(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]|\([^\s()<>]*\))+(?:\([^\s()<>]*\)|[^\s`*!()\[\]{};:'".,<>?\xab\xbb\u201c\u201d\u2018\u2019]))/i;a.defineMode("gfm",function(c,d){function e(a){return a.code=!1,null}var f=0,g={startState:function(){return{code:!1,codeBlock:!1,ateSpace:!1}},copyState:function(a){return{code:a.code,codeBlock:a.codeBlock,ateSpace:a.ateSpace}},token:function(a,c){if(c.combineTokens=null,c.codeBlock)return a.match(/^```+/)?(c.codeBlock=!1,null):(a.skipToEnd(),null);if(a.sol()&&(c.code=!1),a.sol()&&a.match(/^```+/))return a.skipToEnd(),c.codeBlock=!0,null;if("`"===a.peek()){a.next();var e=a.pos;a.eatWhile("`");var g=1+a.pos-e;return c.code?g===f&&(c.code=!1):(f=g,c.code=!0),null}if(c.code)return a.next(),null;if(a.eatSpace())return c.ateSpace=!0,null;if((a.sol()||c.ateSpace)&&(c.ateSpace=!1,d.gitHubSpice!==!1)){if(a.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+@)?(?:[a-f0-9]{7,40}\b)/))return c.combineTokens=!0,"link";if(a.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+)?#[0-9]+\b/))return c.combineTokens=!0,"link"}return a.match(b)&&"]("!=a.string.slice(a.start-2,a.start)&&(0==a.start||/\W/.test(a.string.charAt(a.start-1)))?(c.combineTokens=!0,"link"):(a.next(),null)},blankLine:e},h={taskLists:!0,strikethrough:!0,emoji:!0};for(var i in d)h[i]=d[i];return h.name="markdown",a.overlayMode(a.getMode(c,h),g)},"markdown"),a.defineMIME("text/x-gfm","gfm")})},{"../../addon/mode/overlay":37,"../../lib/codemirror":59,"../markdown/markdown":68}],64:[function(a,b,c){!function(d){"object"==typeof c&&"object"==typeof b?d(a("../../lib/codemirror"),a("../xml/xml"),a("../javascript/javascript"),a("../css/css")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","../xml/xml","../javascript/javascript","../css/css"],d):d(CodeMirror)}(function(a){"use strict";function b(a,b,c){var d=a.current(),e=d.search(b);return e>-1?a.backUp(d.length-e):d.match(/<\/?$/)&&(a.backUp(d.length),a.match(b,!1)||a.match(d)),c}function c(a){var b=i[a];return b?b:i[a]=new RegExp("\\s+"+a+"\\s*=\\s*('|\")?([^'\"]+)('|\")?\\s*")}function d(a,b){var d=a.match(c(b));return d?/^\s*(.*?)\s*$/.exec(d[2])[1]:""}function e(a,b){return new RegExp((b?"^":"")+"","i")}function f(a,b){for(var c in a)for(var d=b[c]||(b[c]=[]),e=a[c],f=e.length-1;f>=0;f--)d.unshift(e[f])}function g(a,b){for(var c=0;c\s\/]/.test(d.current())&&(h=f.htmlState.tagName&&f.htmlState.tagName.toLowerCase())&&k.hasOwnProperty(h))f.inTag=h+" ";else if(f.inTag&&m&&/>$/.test(d.current())){var n=/^([\S]+) (.*)/.exec(f.inTag);f.inTag=null;var o=">"==d.current()&&g(k[n[1]],n[2]),p=a.getMode(c,o),q=e(n[1],!0),r=e(n[1],!1);f.token=function(a,c){return a.match(q,!1)?(c.token=i,c.localState=c.localMode=null,null):b(a,r,c.localMode.token(a,c.localState))},f.localMode=p,f.localState=a.startState(p,j.indent(f.htmlState,""))}else f.inTag&&(f.inTag+=d.current(),d.eol()&&(f.inTag+=" "));return l}var j=a.getMode(c,{name:"xml",htmlMode:!0,multilineTagIndentFactor:d.multilineTagIndentFactor,multilineTagIndentPastTag:d.multilineTagIndentPastTag}),k={},l=d&&d.tags,m=d&&d.scriptTypes;if(f(h,k),l&&f(l,k),m)for(var n=m.length-1;n>=0;n--)k.script.unshift(["type",m[n].matches,m[n].mode]);return{startState:function(){var b=a.startState(j);return{token:i,inTag:null,localMode:null,localState:null,htmlState:b}},copyState:function(b){var c;return b.localState&&(c=a.copyState(b.localMode,b.localState)),{token:b.token,inTag:b.inTag,localMode:b.localMode,localState:c,htmlState:a.copyState(j,b.htmlState)}},token:function(a,b){return b.token(a,b)},indent:function(b,c,d){return!b.localMode||/^\s*<\//.test(c)?j.indent(b.htmlState,c):b.localMode.indent?b.localMode.indent(b.localState,c,d):a.Pass},innerMode:function(a){return{state:a.localState||a.htmlState,mode:a.localMode||j}}}},"xml","javascript","css"),a.defineMIME("text/html","htmlmixed")})},{"../../lib/codemirror":59,"../css/css":61,"../javascript/javascript":66,"../xml/xml":75}],65:[function(a,b,c){!function(d){"object"==typeof c&&"object"==typeof b?d(a("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],d):d(CodeMirror)}(function(a){"use strict";a.defineMode("http",function(){function a(a,b){return a.skipToEnd(),b.cur=g,"error"}function b(b,d){return b.match(/^HTTP\/\d\.\d/)?(d.cur=c,"keyword"):b.match(/^[A-Z]+/)&&/[ \t]/.test(b.peek())?(d.cur=e,"keyword"):a(b,d)}function c(b,c){var e=b.match(/^\d+/);if(!e)return a(b,c);c.cur=d;var f=Number(e[0]);return f>=100&&f<200?"positive informational":f>=200&&f<300?"positive success":f>=300&&f<400?"positive redirect":f>=400&&f<500?"negative client-error":f>=500&&f<600?"negative server-error":"error"}function d(a,b){return a.skipToEnd(),b.cur=g,null}function e(a,b){return a.eatWhile(/\S/),b.cur=f,"string-2"}function f(b,c){return b.match(/^HTTP\/\d\.\d$/)?(c.cur=g,"keyword"):a(b,c)}function g(a){return a.sol()&&!a.eat(/[ \t]/)?a.match(/^.*?:/)?"atom":(a.skipToEnd(),"error"):(a.skipToEnd(),"string")}function h(a){return a.skipToEnd(),null}return{token:function(a,b){var c=b.cur;return c!=g&&c!=h&&a.eatSpace()?null:c(a,b)},blankLine:function(a){a.cur=h},startState:function(){return{cur:b}}}}),a.defineMIME("message/http","http")})},{"../../lib/codemirror":59}],66:[function(a,b,c){!function(d){"object"==typeof c&&"object"==typeof b?d(a("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],d):d(CodeMirror)}(function(a){"use strict";a.defineMode("javascript",function(b,c){function d(a){for(var b,c=!1,d=!1;null!=(b=a.next());){if(!c){if("/"==b&&!d)return;"["==b?d=!0:d&&"]"==b&&(d=!1)}c=!c&&"\\"==b}}function e(a,b,c){return Aa=a,Ba=c,b}function f(a,b){var c=a.next();if('"'==c||"'"==c)return b.tokenize=g(c),b.tokenize(a,b);if("."==c&&a.match(/^\d+(?:[eE][+\-]?\d+)?/))return e("number","number");if("."==c&&a.match(".."))return e("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(c))return e(c);if("="==c&&a.eat(">"))return e("=>","operator");if("0"==c&&a.eat(/x/i))return a.eatWhile(/[\da-f]/i),e("number","number");if("0"==c&&a.eat(/o/i))return a.eatWhile(/[0-7]/i),e("number","number");if("0"==c&&a.eat(/b/i))return a.eatWhile(/[01]/i),e("number","number");if(/\d/.test(c))return a.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/),e("number","number");if("/"==c)return a.eat("*")?(b.tokenize=h,h(a,b)):a.eat("/")?(a.skipToEnd(),e("comment","comment")):za(a,b,1)?(d(a),a.match(/^\b(([gimyu])(?![gimyu]*\2))+\b/),e("regexp","string-2")):(a.eatWhile(Ja),e("operator","operator",a.current()));if("`"==c)return b.tokenize=i,i(a,b);if("#"==c)return a.skipToEnd(),e("error","error");if(Ja.test(c))return">"==c&&b.lexical&&">"==b.lexical.type||a.eatWhile(Ja),e("operator","operator",a.current());if(Ha.test(c)){a.eatWhile(Ha);var f=a.current();if("."!=b.lastType){if(Ia.propertyIsEnumerable(f)){var j=Ia[f];return e(j.type,j.style,f)}if("async"==f&&a.match(/^\s*[\(\w]/,!1))return e("async","keyword",f)}return e("variable","variable",f)}}function g(a){return function(b,c){var d,g=!1;if(Ea&&"@"==b.peek()&&b.match(Ka))return c.tokenize=f,e("jsonld-keyword","meta");for(;null!=(d=b.next())&&(d!=a||g);)g=!g&&"\\"==d;return g||(c.tokenize=f),e("string","string")}}function h(a,b){for(var c,d=!1;c=a.next();){if("/"==c&&d){b.tokenize=f;break}d="*"==c}return e("comment","comment")}function i(a,b){for(var c,d=!1;null!=(c=a.next());){if(!d&&("`"==c||"$"==c&&a.eat("{"))){b.tokenize=f;break}d=!d&&"\\"==c}return e("quasi","string-2",a.current())}function j(a,b){b.fatArrowAt&&(b.fatArrowAt=null);var c=a.string.indexOf("=>",a.start);if(!(c<0)){if(Ga){var d=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(a.string.slice(a.start,c));d&&(c=d.index)}for(var e=0,f=!1,g=c-1;g>=0;--g){var h=a.string.charAt(g),i=La.indexOf(h);if(i>=0&&i<3){if(!e){++g;break}if(0==--e){"("==h&&(f=!0);break}}else if(i>=3&&i<6)++e;else if(Ha.test(h))f=!0;else{if(/["'\/]/.test(h))return;if(f&&!e){++g;break}}}f&&!e&&(b.fatArrowAt=g)}}function k(a,b,c,d,e,f){this.indented=a,this.column=b,this.type=c,this.prev=e,this.info=f,null!=d&&(this.align=d)}function l(a,b){for(var c=a.localVars;c;c=c.next)if(c.name==b)return!0;for(var d=a.context;d;d=d.prev)for(var c=d.vars;c;c=c.next)if(c.name==b)return!0}function m(a,b,c,d,e){var f=a.cc;for(Na.state=a,Na.stream=e,Na.marked=null,Na.cc=f,Na.style=b,a.lexical.hasOwnProperty("align")||(a.lexical.align=!0);;){var g=f.length?f.pop():Fa?w:v;if(g(c,d)){for(;f.length&&f[f.length-1].lex;)f.pop()();return Na.marked?Na.marked:"variable"==c&&l(a,d)?"variable-2":b}}}function n(){for(var a=arguments.length-1;a>=0;a--)Na.cc.push(arguments[a])}function o(){return n.apply(null,arguments),!0}function p(a){function b(b){for(var c=b;c;c=c.next)if(c.name==a)return!0;return!1}var d=Na.state;if(Na.marked="def",d.context){if(b(d.localVars))return;d.localVars={name:a,next:d.localVars}}else{if(b(d.globalVars))return;c.globalVars&&(d.globalVars={name:a,next:d.globalVars})}}function q(){Na.state.context={prev:Na.state.context,vars:Na.state.localVars},Na.state.localVars=Oa}function r(){Na.state.localVars=Na.state.context.vars,Na.state.context=Na.state.context.prev}function s(a,b){var c=function(){var c=Na.state,d=c.indented;if("stat"==c.lexical.type)d=c.lexical.indented;else for(var e=c.lexical;e&&")"==e.type&&e.align;e=e.prev)d=e.indented;c.lexical=new k(d,Na.stream.column(),a,null,c.lexical,b)};return c.lex=!0,c}function t(){var a=Na.state;a.lexical.prev&&(")"==a.lexical.type&&(a.indented=a.lexical.indented),a.lexical=a.lexical.prev)}function u(a){function b(c){return c==a?o():";"==a?n():o(b)}return b}function v(a,b){return"var"==a?o(s("vardef",b.length),$,u(";"),t):"keyword a"==a?o(s("form"),y,v,t):"keyword b"==a?o(s("form"),v,t):"{"==a?o(s("}"),S,t):";"==a?o():"if"==a?("else"==Na.state.lexical.info&&Na.state.cc[Na.state.cc.length-1]==t&&Na.state.cc.pop()(),o(s("form"),y,v,t,da)):"function"==a?o(ja):"for"==a?o(s("form"),ea,v,t):"variable"==a?Ga&&"type"==b?(Na.marked="keyword",o(U,u("operator"),U,u(";"))):Ga&&"declare"==b?(Na.marked="keyword",o(v)):o(s("stat"),L):"switch"==a?o(s("form"),y,u("{"),s("}","switch"),S,t,t):"case"==a?o(w,u(":")):"default"==a?o(u(":")):"catch"==a?o(s("form"),q,u("("),ka,u(")"),v,t,r):"class"==a?o(s("form"),ma,t):"export"==a?o(s("stat"),qa,t):"import"==a?o(s("stat"),sa,t):"module"==a?o(s("form"),_,u("{"),s("}"),S,t,t):"async"==a?o(v):"@"==b?o(w,v):n(s("stat"),w,u(";"),t)}function w(a){return z(a,!1)}function x(a){return z(a,!0)}function y(a){return"("!=a?n():o(s(")"),w,u(")"),t)}function z(a,b){if(Na.state.fatArrowAt==Na.stream.start){var c=b?H:G;if("("==a)return o(q,s(")"),Q(ka,")"),t,u("=>"),c,r);if("variable"==a)return n(q,_,u("=>"),c,r)}var d=b?D:C;return Ma.hasOwnProperty(a)?o(d):"function"==a?o(ja,d):"class"==a?o(s("form"),la,t):"keyword c"==a||"async"==a?o(b?B:A):"("==a?o(s(")"),A,u(")"),t,d):"operator"==a||"spread"==a?o(b?x:w):"["==a?o(s("]"),xa,t,d):"{"==a?R(N,"}",null,d):"quasi"==a?n(E,d):"new"==a?o(I(b)):o()}function A(a){return a.match(/[;\}\)\],]/)?n():n(w)}function B(a){return a.match(/[;\}\)\],]/)?n():n(x)}function C(a,b){return","==a?o(w):D(a,b,!1)}function D(a,b,c){var d=0==c?C:D,e=0==c?w:x;return"=>"==a?o(q,c?H:G,r):"operator"==a?/\+\+|--/.test(b)||Ga&&"!"==b?o(d):"?"==b?o(w,u(":"),e):o(e):"quasi"==a?n(E,d):";"!=a?"("==a?R(x,")","call",d):"."==a?o(M,d):"["==a?o(s("]"),A,u("]"),t,d):Ga&&"as"==b?(Na.marked="keyword",o(U,d)):void 0:void 0}function E(a,b){return"quasi"!=a?n():"${"!=b.slice(b.length-2)?o(E):o(w,F)}function F(a){if("}"==a)return Na.marked="string-2",Na.state.tokenize=i,o(E)}function G(a){return j(Na.stream,Na.state),n("{"==a?v:w)}function H(a){return j(Na.stream,Na.state),n("{"==a?v:x)}function I(a){return function(b){return"."==b?o(a?K:J):"variable"==b&&Ga?o(Z,a?D:C):n(a?x:w)}}function J(a,b){if("target"==b)return Na.marked="keyword",o(C)}function K(a,b){if("target"==b)return Na.marked="keyword",o(D)}function L(a){return":"==a?o(t,v):n(C,u(";"),t)}function M(a){if("variable"==a)return Na.marked="property",o()}function N(a,b){if("async"==a)return Na.marked="property",o(N);if("variable"==a||"keyword"==Na.style){if(Na.marked="property","get"==b||"set"==b)return o(O);var c;return Ga&&Na.state.fatArrowAt==Na.stream.start&&(c=Na.stream.match(/^\s*:\s*/,!1))&&(Na.state.fatArrowAt=Na.stream.pos+c[0].length),o(P)}return"number"==a||"string"==a?(Na.marked=Ea?"property":Na.style+" property",o(P)):"jsonld-keyword"==a?o(P):"modifier"==a?o(N):"["==a?o(w,u("]"),P):"spread"==a?o(w,P):":"==a?n(P):void 0}function O(a){return"variable"!=a?n(P):(Na.marked="property",o(ja))}function P(a){return":"==a?o(x):"("==a?n(ja):void 0}function Q(a,b,c){function d(e,f){if(c?c.indexOf(e)>-1:","==e){var g=Na.state.lexical;return"call"==g.info&&(g.pos=(g.pos||0)+1),o(function(c,d){return c==b||d==b?n():n(a)},d)}return e==b||f==b?o():o(u(b))}return function(c,e){return c==b||e==b?o():n(a,d)}}function R(a,b,c){for(var d=3;d"==a)return o(U)}function W(a,b){return"variable"==a||"keyword"==Na.style?(Na.marked="property",o(W)):"?"==b?o(W):":"==a?o(U):"["==a?o(w,T,u("]"),W):void 0}function X(a){return"variable"==a?o(X):":"==a?o(U):void 0}function Y(a,b){return"<"==b?o(s(">"),Q(U,">"),t,Y):"|"==b||"."==a?o(U):"["==a?o(u("]"),Y):"extends"==b?o(U):void 0}function Z(a,b){if("<"==b)return o(s(">"),Q(U,">"),t,Y)}function $(){return n(_,T,ba,ca)}function _(a,b){return"modifier"==a?o(_):"variable"==a?(p(b),o()):"spread"==a?o(_):"["==a?R(_,"]"):"{"==a?R(aa,"}"):void 0}function aa(a,b){return"variable"!=a||Na.stream.match(/^\s*:/,!1)?("variable"==a&&(Na.marked="property"),"spread"==a?o(_):"}"==a?n():o(u(":"),_,ba)):(p(b),o(ba))}function ba(a,b){if("="==b)return o(x)}function ca(a){if(","==a)return o($)}function da(a,b){if("keyword b"==a&&"else"==b)return o(s("form","else"),v,t)}function ea(a){if("("==a)return o(s(")"),fa,u(")"),t)}function fa(a){return"var"==a?o($,u(";"),ha):";"==a?o(ha):"variable"==a?o(ga):n(w,u(";"),ha)}function ga(a,b){return"in"==b||"of"==b?(Na.marked="keyword",o(w)):o(C,ha)}function ha(a,b){return";"==a?o(ia):"in"==b||"of"==b?(Na.marked="keyword",o(w)):n(w,u(";"),ia)}function ia(a){")"!=a&&o(w)}function ja(a,b){return"*"==b?(Na.marked="keyword",o(ja)):"variable"==a?(p(b),o(ja)):"("==a?o(q,s(")"),Q(ka,")"),t,T,v,r):Ga&&"<"==b?o(s(">"),Q(U,">"),t,ja):void 0}function ka(a){return"spread"==a||"modifier"==a?o(ka):n(_,T,ba)}function la(a,b){return"variable"==a?ma(a,b):na(a,b)}function ma(a,b){if("variable"==a)return p(b),o(na)}function na(a,b){return"<"==b?o(s(">"),Q(U,">"),t,na):"extends"==b||"implements"==b||Ga&&","==a?o(Ga?U:w,na):"{"==a?o(s("}"),oa,t):void 0}function oa(a,b){return"modifier"==a||"async"==a||"variable"==a&&("static"==b||"get"==b||"set"==b)&&Na.stream.match(/^\s+[\w$\xa1-\uffff]/,!1)?(Na.marked="keyword",o(oa)):"variable"==a||"keyword"==Na.style?(Na.marked="property",o(Ga?pa:ja,oa)):"["==a?o(w,u("]"),Ga?pa:ja,oa):"*"==b?(Na.marked="keyword",o(oa)):";"==a?o(oa):"}"==a?o():"@"==b?o(w,oa):void 0}function pa(a,b){return"?"==b?o(pa):":"==a?o(U,ba):"="==b?o(x):n(ja)}function qa(a,b){return"*"==b?(Na.marked="keyword",o(wa,u(";"))):"default"==b?(Na.marked="keyword",o(w,u(";"))):"{"==a?o(Q(ra,"}"),wa,u(";")):n(v)}function ra(a,b){return"as"==b?(Na.marked="keyword",o(u("variable"))):"variable"==a?n(x,ra):void 0}function sa(a){return"string"==a?o():n(ta,ua,wa)}function ta(a,b){return"{"==a?R(ta,"}"):("variable"==a&&p(b),"*"==b&&(Na.marked="keyword"),o(va))}function ua(a){if(","==a)return o(ta,ua)}function va(a,b){if("as"==b)return Na.marked="keyword",o(ta)}function wa(a,b){if("from"==b)return Na.marked="keyword",o(w)}function xa(a){return"]"==a?o():n(Q(x,"]"))}function ya(a,b){return"operator"==a.lastType||","==a.lastType||Ja.test(b.charAt(0))||/[,.]/.test(b.charAt(0))}function za(a,b,c){return b.tokenize==f&&/^(?:operator|sof|keyword c|case|new|export|default|[\[{}\(,;:]|=>)$/.test(b.lastType)||"quasi"==b.lastType&&/\{\s*$/.test(a.string.slice(0,a.pos-(c||0)))}var Aa,Ba,Ca=b.indentUnit,Da=c.statementIndent,Ea=c.jsonld,Fa=c.json||Ea,Ga=c.typescript,Ha=c.wordCharacters||/[\w$\xa1-\uffff]/,Ia=function(){function a(a){return{type:a,style:"keyword"}}var b=a("keyword a"),c=a("keyword b"),d=a("keyword c"),e=a("operator"),f={type:"atom",style:"atom"},g={"if":a("if"),"while":b,"with":b,"else":c,"do":c,"try":c,"finally":c,"return":d,"break":d,"continue":d,"new":a("new"),"delete":d,"throw":d,"debugger":d,"var":a("var"),"const":a("var"),"let":a("var"),"function":a("function"),"catch":a("catch"),"for":a("for"),"switch":a("switch"),"case":a("case"),"default":a("default"),"in":e,"typeof":e,"instanceof":e,"true":f,"false":f,"null":f,undefined:f,NaN:f,Infinity:f,"this":a("this"),"class":a("class"),"super":a("atom"),"yield":d,"export":a("export"),"import":a("import"),"extends":d,await:d};if(Ga){var h={type:"variable",style:"type"},i={"interface":a("class"),"implements":d,namespace:d,module:a("module"),"enum":a("module"),"public":a("modifier"),"private":a("modifier"),"protected":a("modifier"),"abstract":a("modifier"),readonly:a("modifier"),string:h,number:h,"boolean":h,any:h};for(var j in i)g[j]=i[j]}return g}(),Ja=/[+\-*&%=<>!?|~^@]/,Ka=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/,La="([{}])",Ma={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,"this":!0,"jsonld-keyword":!0},Na={state:null,column:null,marked:null,cc:null},Oa={name:"this",next:{name:"arguments"}};return t.lex=!0,{startState:function(a){var b={tokenize:f,lastType:"sof",cc:[],lexical:new k((a||0)-Ca,0,"block",!1),localVars:c.localVars,context:c.localVars&&{vars:c.localVars},indented:a||0};return c.globalVars&&"object"==typeof c.globalVars&&(b.globalVars=c.globalVars),b},token:function(a,b){if(a.sol()&&(b.lexical.hasOwnProperty("align")||(b.lexical.align=!1),b.indented=a.indentation(),j(a,b)),b.tokenize!=h&&a.eatSpace())return null;var c=b.tokenize(a,b);return"comment"==Aa?c:(b.lastType="operator"!=Aa||"++"!=Ba&&"--"!=Ba?Aa:"incdec",m(b,c,Aa,Ba,a))},indent:function(b,d){if(b.tokenize==h)return a.Pass;if(b.tokenize!=f)return 0;var e,g=d&&d.charAt(0),i=b.lexical;if(!/^\s*else\b/.test(d))for(var j=b.cc.length-1;j>=0;--j){var k=b.cc[j];if(k==t)i=i.prev;else if(k!=da)break}for(;("stat"==i.type||"form"==i.type)&&("}"==g||(e=b.cc[b.cc.length-1])&&(e==C||e==D)&&!/^[,\.=+\-*:?[\(]/.test(d));)i=i.prev;Da&&")"==i.type&&"stat"==i.prev.type&&(i=i.prev);var l=i.type,m=g==l;return"vardef"==l?i.indented+("operator"==b.lastType||","==b.lastType?i.info+1:0):"form"==l&&"{"==g?i.indented:"form"==l?i.indented+Ca:"stat"==l?i.indented+(ya(b,d)?Da||Ca:0):"switch"!=i.info||m||0==c.doubleIndentSwitch?i.align?i.column+(m?0:1):i.indented+(m?0:Ca):i.indented+(/^(?:case|default)\b/.test(d)?Ca:2*Ca)},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:Fa?null:"/*",blockCommentEnd:Fa?null:"*/",lineComment:Fa?null:"//",fold:"brace",closeBrackets:"()[]{}''\"\"``",helperType:Fa?"json":"javascript",jsonldMode:Ea,jsonMode:Fa,expressionAllowed:za,skipExpression:function(a){var b=a.cc[a.cc.length-1];b!=w&&b!=x||a.cc.pop()}}}),a.registerHelper("wordChars","javascript",/[\w$]/),a.defineMIME("text/javascript","javascript"),a.defineMIME("text/ecmascript","javascript"),a.defineMIME("application/javascript","javascript"),a.defineMIME("application/x-javascript","javascript"),a.defineMIME("application/ecmascript","javascript"),a.defineMIME("application/json",{name:"javascript",json:!0}),a.defineMIME("application/x-json",{name:"javascript",json:!0}),a.defineMIME("application/ld+json",{name:"javascript",jsonld:!0}),a.defineMIME("text/typescript",{name:"javascript",typescript:!0}),a.defineMIME("application/typescript",{name:"javascript",typescript:!0})})},{"../../lib/codemirror":59}],67:[function(a,b,c){!function(d){"object"==typeof c&&"object"==typeof b?d(a("../../lib/codemirror"),a("../xml/xml"),a("../javascript/javascript")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","../xml/xml","../javascript/javascript"],d):d(CodeMirror)}(function(a){"use strict";function b(a,b,c,d){this.state=a,this.mode=b,this.depth=c,this.prev=d}function c(d){return new b(a.copyState(d.mode,d.state),d.mode,d.depth,d.prev&&c(d.prev))}a.defineMode("jsx",function(d,e){function f(a){var b=a.tagName;a.tagName=null;var c=j.indent(a,"");return a.tagName=b,c}function g(a,b){return b.context.mode==j?h(a,b,b.context):i(a,b,b.context)}function h(c,e,h){if(2==h.depth)return c.match(/^.*?\*\//)?h.depth=1:c.skipToEnd(),"comment";if("{"==c.peek()){j.skipAttribute(h.state);var i=f(h.state),l=h.state.context;if(l&&c.match(/^[^>]*>\s*$/,!1)){for(;l.prev&&!l.startOfLine;)l=l.prev;l.startOfLine?i-=d.indentUnit:h.prev.state.lexical&&(i=h.prev.state.lexical.indented)}else 1==h.depth&&(i+=d.indentUnit);return e.context=new b(a.startState(k,i),k,0,e.context),null}if(1==h.depth){if("<"==c.peek())return j.skipAttribute(h.state),e.context=new b(a.startState(j,f(h.state)),j,0,e.context),null;if(c.match("//"))return c.skipToEnd(),"comment";if(c.match("/*"))return h.depth=2,g(c,e)}var m,n=j.token(c,h.state),o=c.current();return/\btag\b/.test(n)?/>$/.test(o)?h.state.context?h.depth=0:e.context=e.context.prev:/^-1&&c.backUp(o.length-m),n}function i(c,d,e){if("<"==c.peek()&&k.expressionAllowed(c,e.state))return k.skipExpression(e.state),d.context=new b(a.startState(j,k.indent(e.state,"")),j,0,d.context),null;var f=k.token(c,e.state);if(!f&&null!=e.depth){var g=c.current();"{"==g?e.depth++:"}"==g&&0==--e.depth&&(d.context=d.context.prev)}return f}var j=a.getMode(d,{name:"xml",allowMissing:!0,multilineTagIndentPastTag:!1}),k=a.getMode(d,e&&e.base||"javascript");return{startState:function(){return{context:new b(a.startState(k),k)}},copyState:function(a){return{context:c(a.context)}},token:g,indent:function(a,b,c){return a.context.mode.indent(a.context.state,b,c)},innerMode:function(a){return a.context}}},"xml","javascript"),a.defineMIME("text/jsx","jsx"),a.defineMIME("text/typescript-jsx",{name:"jsx",base:{name:"javascript",typescript:!0}})})},{"../../lib/codemirror":59,"../javascript/javascript":66,"../xml/xml":75}],68:[function(a,b,c){!function(d){"object"==typeof c&&"object"==typeof b?d(a("../../lib/codemirror"),a("../xml/xml"),a("../meta")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","../xml/xml","../meta"],d):d(CodeMirror)}(function(a){"use strict";a.defineMode("markdown",function(b,c){function d(c){if(a.findModeByName){var d=a.findModeByName(c);d&&(c=d.mime||d.mimes[0])}var e=a.getMode(b,c);return"null"==e.name?null:e}function e(a,b,c){return b.f=b.inline=c,c(a,b)}function f(a,b,c){return b.f=b.block=c,c(a,b)}function g(a){return!a||!/\S/.test(a.string)}function h(a){return a.linkTitle=!1,a.em=!1,a.strong=!1,a.strikethrough=!1,a.quote=0,a.indentedCode=!1,a.f==j&&(a.f=n,a.block=i),a.trailingSpace=0,a.trailingSpaceNewLine=!1,a.prevLine=a.thisLine,a.thisLine={stream:null},null}function i(b,f){var h=b.column()===f.indentation,i=g(f.prevLine.stream),j=f.indentedCode,m=f.prevLine.hr,n=f.list!==!1,o=(f.listStack[f.listStack.length-1]||0)+3;f.indentedCode=!1;var p=f.indentation;if(null===f.indentationDiff&&(f.indentationDiff=f.indentation,n)){for(f.list=null;p=4&&(j||f.prevLine.fencedCodeEnd||f.prevLine.header||i))return b.skipToEnd(),f.indentedCode=!0,w.code;if(b.eatSpace())return null;if(h&&f.indentation<=o&&(t=b.match(B))&&t[1].length<=6)return f.quote=0,f.header=t[1].length,f.thisLine.header=!0,c.highlightFormatting&&(f.formatting="header"),f.f=f.inline,l(f);if(f.indentation<=o&&b.eat(">"))return f.quote=h?1:f.quote+1,c.highlightFormatting&&(f.formatting="quote"),b.eatSpace(),l(f);if(!s&&!f.setext&&h&&f.indentation<=o&&(t=b.match(z))){var u=t[1]?"ol":"ul";return f.indentation=p+b.current().length,f.list=!0,f.quote=0,f.listStack.push(f.indentation),c.taskLists&&b.match(A,!1)&&(f.taskList=!0),f.f=f.inline,c.highlightFormatting&&(f.formatting=["list","list-"+u]),l(f)}return h&&f.indentation<=o&&(t=b.match(E,!0))?(f.quote=0,f.fencedEndRE=new RegExp(t[1]+"+ *$"),f.localMode=c.fencedCodeBlockHighlighting&&d(t[2]),f.localMode&&(f.localState=a.startState(f.localMode)),f.f=f.block=k,c.highlightFormatting&&(f.formatting="code-block"),f.code=-1,l(f)):f.setext||!(q&&n||f.quote||f.list!==!1||f.code||s||F.test(b.string))&&(t=b.lookAhead(1))&&(t=t.match(C))?(f.setext?(f.header=f.setext,f.setext=0,b.skipToEnd(),c.highlightFormatting&&(f.formatting="header")):(f.header="="==t[0].charAt(0)?1:2,f.setext=f.header),f.thisLine.header=!0,f.f=f.inline,l(f)):s?(b.skipToEnd(),f.hr=!0,f.thisLine.hr=!0,w.hr):"["===b.peek()?e(b,f,r):e(b,f,f.inline)}function j(b,c){var d=u.token(b,c.htmlState);if(!v){var e=a.innerMode(u,c.htmlState);("xml"==e.mode.name&&null===e.state.tagStart&&!e.state.context&&e.state.tokenize.isInText||c.md_inside&&b.current().indexOf(">")>-1)&&(c.f=n,c.block=i,c.htmlState=null)}return d}function k(a,b){var d=b.listStack[b.listStack.length-1]||0,e=b.indentation=a.quote?b.push(w.formatting+"-"+a.formatting[d]+"-"+a.quote):b.push("error"))}if(a.taskOpen)return b.push("meta"),b.length?b.join(" "):null;if(a.taskClosed)return b.push("property"),b.length?b.join(" "):null;if(a.linkHref?b.push(w.linkHref,"url"):(a.strong&&b.push(w.strong),a.em&&b.push(w.em),a.strikethrough&&b.push(w.strikethrough),a.emoji&&b.push(w.emoji),a.linkText&&b.push(w.linkText),a.code&&b.push(w.code),a.image&&b.push(w.image),a.imageAltText&&b.push(w.imageAltText,"link"),a.imageMarker&&b.push(w.imageMarker)),a.header&&b.push(w.header,w.header+"-"+a.header),a.quote&&(b.push(w.quote),!c.maxBlockquoteDepth||c.maxBlockquoteDepth>=a.quote?b.push(w.quote+"-"+a.quote):b.push(w.quote+"-"+c.maxBlockquoteDepth)),a.list!==!1){var e=(a.listStack.length-1)%3;e?1===e?b.push(w.list2):b.push(w.list3):b.push(w.list1)}return a.trailingSpaceNewLine?b.push("trailing-space-new-line"):a.trailingSpace&&b.push("trailing-space-"+(a.trailingSpace%2?"a":"b")),b.length?b.join(" "):null}function m(a,b){if(a.match(D,!0))return l(b)}function n(b,d){var e=d.text(b,d);if("undefined"!=typeof e)return e;if(d.list)return d.list=null,l(d);if(d.taskList){var g=" "===b.match(A,!0)[1];return g?d.taskOpen=!0:d.taskClosed=!0,c.highlightFormatting&&(d.formatting="task"),d.taskList=!1, +l(d)}if(d.taskOpen=!1,d.taskClosed=!1,d.header&&b.match(/^#+$/,!0))return c.highlightFormatting&&(d.formatting="header"),l(d);var h=b.next();if(d.linkTitle){d.linkTitle=!1;var i=h;"("===h&&(i=")"),i=(i+"").replace(/([.?*+^\[\]\\(){}|-])/g,"\\$1");var k="^\\s*(?:[^"+i+"\\\\]+|\\\\\\\\|\\\\.)"+i;if(b.match(new RegExp(k),!0))return w.linkHref}if("`"===h){var m=d.formatting;c.highlightFormatting&&(d.formatting="code"),b.eatWhile("`");var q=b.current().length;if(0!=d.code||d.quote&&1!=q){if(q==d.code){var r=l(d);return d.code=0,r}return d.formatting=m,l(d)}return d.code=q,l(d)}if(d.code)return l(d);if("\\"===h&&(b.next(),c.highlightFormatting)){var s=l(d),t=w.formatting+"-escape";return s?s+" "+t:t}if("!"===h&&b.match(/\[[^\]]*\] ?(?:\(|\[)/,!1))return d.imageMarker=!0,d.image=!0,c.highlightFormatting&&(d.formatting="image"),l(d);if("["===h&&d.imageMarker&&b.match(/[^\]]*\](\(.*?\)| ?\[.*?\])/,!1))return d.imageMarker=!1,d.imageAltText=!0,c.highlightFormatting&&(d.formatting="image"),l(d);if("]"===h&&d.imageAltText){c.highlightFormatting&&(d.formatting="image");var s=l(d);return d.imageAltText=!1,d.image=!1,d.inline=d.f=p,s}if("["===h&&!d.image)return d.linkText=!0,c.highlightFormatting&&(d.formatting="link"),l(d);if("]"===h&&d.linkText){c.highlightFormatting&&(d.formatting="link");var s=l(d);return d.linkText=!1,d.inline=d.f=b.match(/\(.*?\)| ?\[.*?\]/,!1)?p:n,s}if("<"===h&&b.match(/^(https?|ftps?):\/\/(?:[^\\>]|\\.)+>/,!1)){d.f=d.inline=o,c.highlightFormatting&&(d.formatting="link");var s=l(d);return s?s+=" ":s="",s+w.linkInline}if("<"===h&&b.match(/^[^> \\]+@(?:[^\\>]|\\.)+>/,!1)){d.f=d.inline=o,c.highlightFormatting&&(d.formatting="link");var s=l(d);return s?s+=" ":s="",s+w.linkEmail}if(c.xml&&"<"===h&&b.match(/^(!--|[a-z]+(?:\s+[a-z_:.\-]+(?:\s*=\s*[^ >]+)?)*\s*>)/i,!1)){var v=b.string.indexOf(">",b.pos);if(v!=-1){var x=b.string.substring(b.start,v);/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(x)&&(d.md_inside=!0)}return b.backUp(1),d.htmlState=a.startState(u),f(b,d,j)}if(c.xml&&"<"===h&&b.match(/^\/\w*?>/))return d.md_inside=!1,"tag";if("*"===h||"_"===h){for(var y=1,z=1==b.pos?" ":b.string.charAt(b.pos-2);y<3&&b.eat(h);)y++;var B=b.peek()||" ",C=!/\s/.test(B)&&(!G.test(B)||/\s/.test(z)||G.test(z)),D=!/\s/.test(z)&&(!G.test(z)||/\s/.test(B)||G.test(B)),E=null,F=null;if(y%2&&(d.em||!C||"*"!==h&&D&&!G.test(z)?d.em!=h||!D||"*"!==h&&C&&!G.test(B)||(E=!1):E=!0),y>1&&(d.strong||!C||"*"!==h&&D&&!G.test(z)?d.strong!=h||!D||"*"!==h&&C&&!G.test(B)||(F=!1):F=!0),null!=F||null!=E){c.highlightFormatting&&(d.formatting=null==E?"strong":null==F?"em":"strong em"),E===!0&&(d.em=h),F===!0&&(d.strong=h);var r=l(d);return E===!1&&(d.em=!1),F===!1&&(d.strong=!1),r}}else if(" "===h&&(b.eat("*")||b.eat("_"))){if(" "===b.peek())return l(d);b.backUp(1)}if(c.strikethrough)if("~"===h&&b.eatWhile(h)){if(d.strikethrough){c.highlightFormatting&&(d.formatting="strikethrough");var r=l(d);return d.strikethrough=!1,r}if(b.match(/^[^\s]/,!1))return d.strikethrough=!0,c.highlightFormatting&&(d.formatting="strikethrough"),l(d)}else if(" "===h&&b.match(/^~~/,!0)){if(" "===b.peek())return l(d);b.backUp(2)}if(c.emoji&&":"===h&&b.match(/^[a-z_\d+-]+:/)){d.emoji=!0,c.highlightFormatting&&(d.formatting="emoji");var H=l(d);return d.emoji=!1,H}return" "===h&&(b.match(/ +$/,!1)?d.trailingSpace++:d.trailingSpace&&(d.trailingSpaceNewLine=!0)),l(d)}function o(a,b){var d=a.next();if(">"===d){b.f=b.inline=n,c.highlightFormatting&&(b.formatting="link");var e=l(b);return e?e+=" ":e="",e+w.linkInline}return a.match(/^[^>]+/,!0),w.linkInline}function p(a,b){if(a.eatSpace())return null;var d=a.next();return"("===d||"["===d?(b.f=b.inline=q("("===d?")":"]"),c.highlightFormatting&&(b.formatting="link-string"),b.linkHref=!0,l(b)):"error"}function q(a){return function(b,d){var e=b.next();if(e===a){d.f=d.inline=n,c.highlightFormatting&&(d.formatting="link-string");var f=l(d);return d.linkHref=!1,f}return b.match(I[a]),d.linkHref=!0,l(d)}}function r(a,b){return a.match(/^([^\]\\]|\\.)*\]:/,!1)?(b.f=s,a.next(),c.highlightFormatting&&(b.formatting="link"),b.linkText=!0,l(b)):e(a,b,n)}function s(a,b){if(a.match(/^\]:/,!0)){b.f=b.inline=t,c.highlightFormatting&&(b.formatting="link");var d=l(b);return b.linkText=!1,d}return a.match(/^([^\]\\]|\\.)+/,!0),w.linkText}function t(a,b){return a.eatSpace()?null:(a.match(/^[^\s]+/,!0),void 0===a.peek()?b.linkTitle=!0:a.match(/^(?:\s+(?:"(?:[^"\\]|\\\\|\\.)+"|'(?:[^'\\]|\\\\|\\.)+'|\((?:[^)\\]|\\\\|\\.)+\)))?/,!0),b.f=b.inline=n,w.linkHref+" url")}var u=a.getMode(b,"text/html"),v="null"==u.name;void 0===c.highlightFormatting&&(c.highlightFormatting=!1),void 0===c.maxBlockquoteDepth&&(c.maxBlockquoteDepth=0),void 0===c.taskLists&&(c.taskLists=!1),void 0===c.strikethrough&&(c.strikethrough=!1),void 0===c.emoji&&(c.emoji=!1),void 0===c.fencedCodeBlockHighlighting&&(c.fencedCodeBlockHighlighting=!0),void 0===c.xml&&(c.xml=!0),void 0===c.tokenTypeOverrides&&(c.tokenTypeOverrides={});var w={header:"header",code:"comment",quote:"quote",list1:"variable-2",list2:"variable-3",list3:"keyword",hr:"hr",image:"image",imageAltText:"image-alt-text",imageMarker:"image-marker",formatting:"formatting",linkInline:"link",linkEmail:"link",linkText:"link",linkHref:"string",em:"em",strong:"strong",strikethrough:"strikethrough",emoji:"builtin"};for(var x in w)w.hasOwnProperty(x)&&c.tokenTypeOverrides[x]&&(w[x]=c.tokenTypeOverrides[x]);var y=/^([*\-_])(?:\s*\1){2,}\s*$/,z=/^(?:[*\-+]|^[0-9]+([.)]))\s+/,A=/^\[(x| )\](?=\s)/i,B=c.allowAtxHeaderWithoutSpace?/^(#+)/:/^(#+)(?: |$)/,C=/^ *(?:\={1,}|-{1,})\s*$/,D=/^[^#!\[\]*_\\<>` "'(~:]+/,E=/^(~~~+|```+)[ \t]*([\w+#-]*)[^\n`]*$/,F=/^\s*\[[^\]]+?\]:\s*\S+(\s*\S*\s*)?$/,G=/[!\"#$%&\'()*+,\-\.\/:;<=>?@\[\\\]^_`{|}~\u2014]/,H=" ",I={")":/^(?:[^\\\(\)]|\\.|\((?:[^\\\(\)]|\\.)*\))*?(?=\))/,"]":/^(?:[^\\\[\]]|\\.|\[(?:[^\\\[\]]|\\.)*\])*?(?=\])/},J={startState:function(){return{f:i,prevLine:{stream:null},thisLine:{stream:null},block:i,htmlState:null,indentation:0,inline:n,text:m,formatting:!1,linkText:!1,linkHref:!1,linkTitle:!1,code:0,em:!1,strong:!1,header:0,setext:0,hr:!1,taskList:!1,list:!1,listStack:[],quote:0,trailingSpace:0,trailingSpaceNewLine:!1,strikethrough:!1,emoji:!1,fencedEndRE:null}},copyState:function(b){return{f:b.f,prevLine:b.prevLine,thisLine:b.thisLine,block:b.block,htmlState:b.htmlState&&a.copyState(u,b.htmlState),indentation:b.indentation,localMode:b.localMode,localState:b.localMode?a.copyState(b.localMode,b.localState):null,inline:b.inline,text:b.text,formatting:!1,linkText:b.linkText,linkTitle:b.linkTitle,code:b.code,em:b.em,strong:b.strong,strikethrough:b.strikethrough,emoji:b.emoji,header:b.header,setext:b.setext,hr:b.hr,taskList:b.taskList,list:b.list,listStack:b.listStack.slice(0),quote:b.quote,indentedCode:b.indentedCode,trailingSpace:b.trailingSpace,trailingSpaceNewLine:b.trailingSpaceNewLine,md_inside:b.md_inside,fencedEndRE:b.fencedEndRE}},token:function(a,b){if(b.formatting=!1,a!=b.thisLine.stream){if(b.header=0,b.hr=!1,a.match(/^\s*$/,!0))return h(b),null;if(b.prevLine=b.thisLine,b.thisLine={stream:a},b.taskList=!1,b.trailingSpace=0,b.trailingSpaceNewLine=!1,b.f=b.block,b.f!=j){var c=a.match(/^\s*/,!0)[0].replace(/\t/g,H).length;if(b.indentation=c,b.indentationDiff=null,c>0)return null}}return b.f(a,b)},innerMode:function(a){return a.block==j?{state:a.htmlState,mode:u}:a.localState?{state:a.localState,mode:a.localMode}:{state:a,mode:J}},indent:function(b,c,d){return b.block==j&&u.indent?u.indent(b.htmlState,c,d):b.localState&&b.localMode.indent?b.localMode.indent(b.localState,c,d):a.Pass},blankLine:h,getType:l,closeBrackets:"()[]{}''\"\"``",fold:"markdown"};return J},"xml"),a.defineMIME("text/x-markdown","markdown")})},{"../../lib/codemirror":59,"../meta":69,"../xml/xml":75}],69:[function(a,b,c){!function(d){"object"==typeof c&&"object"==typeof b?d(a("../lib/codemirror")):"function"==typeof define&&define.amd?define(["../lib/codemirror"],d):d(CodeMirror)}(function(a){"use strict";a.modeInfo=[{name:"APL",mime:"text/apl",mode:"apl",ext:["dyalog","apl"]},{name:"PGP",mimes:["application/pgp","application/pgp-encrypted","application/pgp-keys","application/pgp-signature"],mode:"asciiarmor",ext:["asc","pgp","sig"]},{name:"ASN.1",mime:"text/x-ttcn-asn",mode:"asn.1",ext:["asn","asn1"]},{name:"Asterisk",mime:"text/x-asterisk",mode:"asterisk",file:/^extensions\.conf$/i},{name:"Brainfuck",mime:"text/x-brainfuck",mode:"brainfuck",ext:["b","bf"]},{name:"C",mime:"text/x-csrc",mode:"clike",ext:["c","h"]},{name:"C++",mime:"text/x-c++src",mode:"clike",ext:["cpp","c++","cc","cxx","hpp","h++","hh","hxx"],alias:["cpp"]},{name:"Cobol",mime:"text/x-cobol",mode:"cobol",ext:["cob","cpy"]},{name:"C#",mime:"text/x-csharp",mode:"clike",ext:["cs"],alias:["csharp"]},{name:"Clojure",mime:"text/x-clojure",mode:"clojure",ext:["clj","cljc","cljx"]},{name:"ClojureScript",mime:"text/x-clojurescript",mode:"clojure",ext:["cljs"]},{name:"Closure Stylesheets (GSS)",mime:"text/x-gss",mode:"css",ext:["gss"]},{name:"CMake",mime:"text/x-cmake",mode:"cmake",ext:["cmake","cmake.in"],file:/^CMakeLists.txt$/},{name:"CoffeeScript",mimes:["application/vnd.coffeescript","text/coffeescript","text/x-coffeescript"],mode:"coffeescript",ext:["coffee"],alias:["coffee","coffee-script"]},{name:"Common Lisp",mime:"text/x-common-lisp",mode:"commonlisp",ext:["cl","lisp","el"],alias:["lisp"]},{name:"Cypher",mime:"application/x-cypher-query",mode:"cypher",ext:["cyp","cypher"]},{name:"Cython",mime:"text/x-cython",mode:"python",ext:["pyx","pxd","pxi"]},{name:"Crystal",mime:"text/x-crystal",mode:"crystal",ext:["cr"]},{name:"CSS",mime:"text/css",mode:"css",ext:["css"]},{name:"CQL",mime:"text/x-cassandra",mode:"sql",ext:["cql"]},{name:"D",mime:"text/x-d",mode:"d",ext:["d"]},{name:"Dart",mimes:["application/dart","text/x-dart"],mode:"dart",ext:["dart"]},{name:"diff",mime:"text/x-diff",mode:"diff",ext:["diff","patch"]},{name:"Django",mime:"text/x-django",mode:"django"},{name:"Dockerfile",mime:"text/x-dockerfile",mode:"dockerfile",file:/^Dockerfile$/},{name:"DTD",mime:"application/xml-dtd",mode:"dtd",ext:["dtd"]},{name:"Dylan",mime:"text/x-dylan",mode:"dylan",ext:["dylan","dyl","intr"]},{name:"EBNF",mime:"text/x-ebnf",mode:"ebnf"},{name:"ECL",mime:"text/x-ecl",mode:"ecl",ext:["ecl"]},{name:"edn",mime:"application/edn",mode:"clojure",ext:["edn"]},{name:"Eiffel",mime:"text/x-eiffel",mode:"eiffel",ext:["e"]},{name:"Elm",mime:"text/x-elm",mode:"elm",ext:["elm"]},{name:"Embedded Javascript",mime:"application/x-ejs",mode:"htmlembedded",ext:["ejs"]},{name:"Embedded Ruby",mime:"application/x-erb",mode:"htmlembedded",ext:["erb"]},{name:"Erlang",mime:"text/x-erlang",mode:"erlang",ext:["erl"]},{name:"Factor",mime:"text/x-factor",mode:"factor",ext:["factor"]},{name:"FCL",mime:"text/x-fcl",mode:"fcl"},{name:"Forth",mime:"text/x-forth",mode:"forth",ext:["forth","fth","4th"]},{name:"Fortran",mime:"text/x-fortran",mode:"fortran",ext:["f","for","f77","f90"]},{name:"F#",mime:"text/x-fsharp",mode:"mllike",ext:["fs"],alias:["fsharp"]},{name:"Gas",mime:"text/x-gas",mode:"gas",ext:["s"]},{name:"Gherkin",mime:"text/x-feature",mode:"gherkin",ext:["feature"]},{name:"GitHub Flavored Markdown",mime:"text/x-gfm",mode:"gfm",file:/^(readme|contributing|history).md$/i},{name:"Go",mime:"text/x-go",mode:"go",ext:["go"]},{name:"Groovy",mime:"text/x-groovy",mode:"groovy",ext:["groovy","gradle"],file:/^Jenkinsfile$/},{name:"HAML",mime:"text/x-haml",mode:"haml",ext:["haml"]},{name:"Haskell",mime:"text/x-haskell",mode:"haskell",ext:["hs"]},{name:"Haskell (Literate)",mime:"text/x-literate-haskell",mode:"haskell-literate",ext:["lhs"]},{name:"Haxe",mime:"text/x-haxe",mode:"haxe",ext:["hx"]},{name:"HXML",mime:"text/x-hxml",mode:"haxe",ext:["hxml"]},{name:"ASP.NET",mime:"application/x-aspx",mode:"htmlembedded",ext:["aspx"],alias:["asp","aspx"]},{name:"HTML",mime:"text/html",mode:"htmlmixed",ext:["html","htm"],alias:["xhtml"]},{name:"HTTP",mime:"message/http",mode:"http"},{name:"IDL",mime:"text/x-idl",mode:"idl",ext:["pro"]},{name:"Pug",mime:"text/x-pug",mode:"pug",ext:["jade","pug"],alias:["jade"]},{name:"Java",mime:"text/x-java",mode:"clike",ext:["java"]},{name:"Java Server Pages",mime:"application/x-jsp",mode:"htmlembedded",ext:["jsp"],alias:["jsp"]},{name:"JavaScript",mimes:["text/javascript","text/ecmascript","application/javascript","application/x-javascript","application/ecmascript"],mode:"javascript",ext:["js"],alias:["ecmascript","js","node"]},{name:"JSON",mimes:["application/json","application/x-json"],mode:"javascript",ext:["json","map"],alias:["json5"]},{name:"JSON-LD",mime:"application/ld+json",mode:"javascript",ext:["jsonld"],alias:["jsonld"]},{name:"JSX",mime:"text/jsx",mode:"jsx",ext:["jsx"]},{name:"Jinja2",mime:"null",mode:"jinja2"},{name:"Julia",mime:"text/x-julia",mode:"julia",ext:["jl"]},{name:"Kotlin",mime:"text/x-kotlin",mode:"clike",ext:["kt"]},{name:"LESS",mime:"text/x-less",mode:"css",ext:["less"]},{name:"LiveScript",mime:"text/x-livescript",mode:"livescript",ext:["ls"],alias:["ls"]},{name:"Lua",mime:"text/x-lua",mode:"lua",ext:["lua"]},{name:"Markdown",mime:"text/x-markdown",mode:"markdown",ext:["markdown","md","mkd"]},{name:"mIRC",mime:"text/mirc",mode:"mirc"},{name:"MariaDB SQL",mime:"text/x-mariadb",mode:"sql"},{name:"Mathematica",mime:"text/x-mathematica",mode:"mathematica",ext:["m","nb"]},{name:"Modelica",mime:"text/x-modelica",mode:"modelica",ext:["mo"]},{name:"MUMPS",mime:"text/x-mumps",mode:"mumps",ext:["mps"]},{name:"MS SQL",mime:"text/x-mssql",mode:"sql"},{name:"mbox",mime:"application/mbox",mode:"mbox",ext:["mbox"]},{name:"MySQL",mime:"text/x-mysql",mode:"sql"},{name:"Nginx",mime:"text/x-nginx-conf",mode:"nginx",file:/nginx.*\.conf$/i},{name:"NSIS",mime:"text/x-nsis",mode:"nsis",ext:["nsh","nsi"]},{name:"NTriples",mimes:["application/n-triples","application/n-quads","text/n-triples"],mode:"ntriples",ext:["nt","nq"]},{name:"Objective C",mime:"text/x-objectivec",mode:"clike",ext:["m","mm"],alias:["objective-c","objc"]},{name:"OCaml",mime:"text/x-ocaml",mode:"mllike",ext:["ml","mli","mll","mly"]},{name:"Octave",mime:"text/x-octave",mode:"octave",ext:["m"]},{name:"Oz",mime:"text/x-oz",mode:"oz",ext:["oz"]},{name:"Pascal",mime:"text/x-pascal",mode:"pascal",ext:["p","pas"]},{name:"PEG.js",mime:"null",mode:"pegjs",ext:["jsonld"]},{name:"Perl",mime:"text/x-perl",mode:"perl",ext:["pl","pm"]},{name:"PHP",mime:"application/x-httpd-php",mode:"php",ext:["php","php3","php4","php5","php7","phtml"]},{name:"Pig",mime:"text/x-pig",mode:"pig",ext:["pig"]},{name:"Plain Text",mime:"text/plain",mode:"null",ext:["txt","text","conf","def","list","log"]},{name:"PLSQL",mime:"text/x-plsql",mode:"sql",ext:["pls"]},{name:"PowerShell",mime:"application/x-powershell",mode:"powershell",ext:["ps1","psd1","psm1"]},{name:"Properties files",mime:"text/x-properties",mode:"properties",ext:["properties","ini","in"],alias:["ini","properties"]},{name:"ProtoBuf",mime:"text/x-protobuf",mode:"protobuf",ext:["proto"]},{name:"Python",mime:"text/x-python",mode:"python",ext:["BUILD","bzl","py","pyw"],file:/^(BUCK|BUILD)$/},{name:"Puppet",mime:"text/x-puppet",mode:"puppet",ext:["pp"]},{name:"Q",mime:"text/x-q",mode:"q",ext:["q"]},{name:"R",mime:"text/x-rsrc",mode:"r",ext:["r","R"],alias:["rscript"]},{name:"reStructuredText",mime:"text/x-rst",mode:"rst",ext:["rst"],alias:["rst"]},{name:"RPM Changes",mime:"text/x-rpm-changes",mode:"rpm"},{name:"RPM Spec",mime:"text/x-rpm-spec",mode:"rpm",ext:["spec"]},{name:"Ruby",mime:"text/x-ruby",mode:"ruby",ext:["rb"],alias:["jruby","macruby","rake","rb","rbx"]},{name:"Rust",mime:"text/x-rustsrc",mode:"rust",ext:["rs"]},{name:"SAS",mime:"text/x-sas",mode:"sas",ext:["sas"]},{name:"Sass",mime:"text/x-sass",mode:"sass",ext:["sass"]},{name:"Scala",mime:"text/x-scala",mode:"clike",ext:["scala"]},{name:"Scheme",mime:"text/x-scheme",mode:"scheme",ext:["scm","ss"]},{name:"SCSS",mime:"text/x-scss",mode:"css",ext:["scss"]},{name:"Shell",mimes:["text/x-sh","application/x-sh"],mode:"shell",ext:["sh","ksh","bash"],alias:["bash","sh","zsh"],file:/^PKGBUILD$/},{name:"Sieve",mime:"application/sieve",mode:"sieve",ext:["siv","sieve"]},{name:"Slim",mimes:["text/x-slim","application/x-slim"],mode:"slim",ext:["slim"]},{name:"Smalltalk",mime:"text/x-stsrc",mode:"smalltalk",ext:["st"]},{name:"Smarty",mime:"text/x-smarty",mode:"smarty",ext:["tpl"]},{name:"Solr",mime:"text/x-solr",mode:"solr"},{name:"Soy",mime:"text/x-soy",mode:"soy",ext:["soy"],alias:["closure template"]},{name:"SPARQL",mime:"application/sparql-query",mode:"sparql",ext:["rq","sparql"],alias:["sparul"]},{name:"Spreadsheet",mime:"text/x-spreadsheet",mode:"spreadsheet",alias:["excel","formula"]},{name:"SQL",mime:"text/x-sql",mode:"sql",ext:["sql"]},{name:"SQLite",mime:"text/x-sqlite",mode:"sql"},{name:"Squirrel",mime:"text/x-squirrel",mode:"clike",ext:["nut"]},{name:"Stylus",mime:"text/x-styl",mode:"stylus",ext:["styl"]},{name:"Swift",mime:"text/x-swift",mode:"swift",ext:["swift"]},{name:"sTeX",mime:"text/x-stex",mode:"stex"},{name:"LaTeX",mime:"text/x-latex",mode:"stex",ext:["text","ltx"],alias:["tex"]},{name:"SystemVerilog",mime:"text/x-systemverilog",mode:"verilog",ext:["v","sv","svh"]},{name:"Tcl",mime:"text/x-tcl",mode:"tcl",ext:["tcl"]},{name:"Textile",mime:"text/x-textile",mode:"textile",ext:["textile"]},{name:"TiddlyWiki ",mime:"text/x-tiddlywiki",mode:"tiddlywiki"},{name:"Tiki wiki",mime:"text/tiki",mode:"tiki"},{name:"TOML",mime:"text/x-toml",mode:"toml",ext:["toml"]},{name:"Tornado",mime:"text/x-tornado",mode:"tornado"},{name:"troff",mime:"text/troff",mode:"troff",ext:["1","2","3","4","5","6","7","8","9"]},{name:"TTCN",mime:"text/x-ttcn",mode:"ttcn",ext:["ttcn","ttcn3","ttcnpp"]},{name:"TTCN_CFG",mime:"text/x-ttcn-cfg",mode:"ttcn-cfg",ext:["cfg"]},{name:"Turtle",mime:"text/turtle",mode:"turtle",ext:["ttl"]},{name:"TypeScript",mime:"application/typescript",mode:"javascript",ext:["ts"],alias:["ts"]},{name:"TypeScript-JSX",mime:"text/typescript-jsx",mode:"jsx",ext:["tsx"],alias:["tsx"]},{name:"Twig",mime:"text/x-twig",mode:"twig"},{name:"Web IDL",mime:"text/x-webidl",mode:"webidl",ext:["webidl"]},{name:"VB.NET",mime:"text/x-vb",mode:"vb",ext:["vb"]},{name:"VBScript",mime:"text/vbscript",mode:"vbscript",ext:["vbs"]},{name:"Velocity",mime:"text/velocity",mode:"velocity",ext:["vtl"]},{name:"Verilog",mime:"text/x-verilog",mode:"verilog",ext:["v"]},{name:"VHDL",mime:"text/x-vhdl",mode:"vhdl",ext:["vhd","vhdl"]},{name:"Vue.js Component",mimes:["script/x-vue","text/x-vue"],mode:"vue",ext:["vue"]},{name:"XML",mimes:["application/xml","text/xml"],mode:"xml",ext:["xml","xsl","xsd","svg"],alias:["rss","wsdl","xsd"]},{name:"XQuery",mime:"application/xquery",mode:"xquery",ext:["xy","xquery"]},{name:"Yacas",mime:"text/x-yacas",mode:"yacas",ext:["ys"]},{name:"YAML",mimes:["text/x-yaml","text/yaml"],mode:"yaml",ext:["yaml","yml"],alias:["yml"]},{name:"Z80",mime:"text/x-z80",mode:"z80",ext:["z80"]},{name:"mscgen",mime:"text/x-mscgen",mode:"mscgen",ext:["mscgen","mscin","msc"]},{name:"xu",mime:"text/x-xu",mode:"mscgen",ext:["xu"]},{name:"msgenny",mime:"text/x-msgenny",mode:"mscgen",ext:["msgenny"]}];for(var b=0;b-1&&b.substring(e+1,b.length);if(f)return a.findModeByExtension(f)},a.findModeByName=function(b){b=b.toLowerCase();for(var c=0;c*\/]/.test(h)?c(null,"select-op"):/[;{}:\[\]]/.test(h)?c(null,h):(a.eatWhile(/[\w\\\-]/),c("variable","variable")):c(null,"compare"):void c(null,"compare")}function e(a,b){for(var e,f=!1;null!=(e=a.next());){if(f&&"/"==e){b.tokenize=d;break}f="*"==e}return c("comment","comment")}function f(a,b){for(var e,f=0;null!=(e=a.next());){if(f>=2&&">"==e){b.tokenize=d;break}f="-"==e?f+1:0}return c("comment","comment")}function g(a){return function(b,e){for(var f,g=!1;null!=(f=b.next())&&(f!=a||g);)g=!g&&"\\"==f;return g||(e.tokenize=d),c("string","string")}}var h,i=b("break return rewrite set accept_mutex accept_mutex_delay access_log add_after_body add_before_body add_header addition_types aio alias allow ancient_browser ancient_browser_value auth_basic auth_basic_user_file auth_http auth_http_header auth_http_timeout autoindex autoindex_exact_size autoindex_localtime charset charset_types client_body_buffer_size client_body_in_file_only client_body_in_single_buffer client_body_temp_path client_body_timeout client_header_buffer_size client_header_timeout client_max_body_size connection_pool_size create_full_put_path daemon dav_access dav_methods debug_connection debug_points default_type degradation degrade deny devpoll_changes devpoll_events directio directio_alignment empty_gif env epoll_events error_log eventport_events expires fastcgi_bind fastcgi_buffer_size fastcgi_buffers fastcgi_busy_buffers_size fastcgi_cache fastcgi_cache_key fastcgi_cache_methods fastcgi_cache_min_uses fastcgi_cache_path fastcgi_cache_use_stale fastcgi_cache_valid fastcgi_catch_stderr fastcgi_connect_timeout fastcgi_hide_header fastcgi_ignore_client_abort fastcgi_ignore_headers fastcgi_index fastcgi_intercept_errors fastcgi_max_temp_file_size fastcgi_next_upstream fastcgi_param fastcgi_pass_header fastcgi_pass_request_body fastcgi_pass_request_headers fastcgi_read_timeout fastcgi_send_lowat fastcgi_send_timeout fastcgi_split_path_info fastcgi_store fastcgi_store_access fastcgi_temp_file_write_size fastcgi_temp_path fastcgi_upstream_fail_timeout fastcgi_upstream_max_fails flv geoip_city geoip_country google_perftools_profiles gzip gzip_buffers gzip_comp_level gzip_disable gzip_hash gzip_http_version gzip_min_length gzip_no_buffer gzip_proxied gzip_static gzip_types gzip_vary gzip_window if_modified_since ignore_invalid_headers image_filter image_filter_buffer image_filter_jpeg_quality image_filter_transparency imap_auth imap_capabilities imap_client_buffer index ip_hash keepalive_requests keepalive_timeout kqueue_changes kqueue_events large_client_header_buffers limit_conn limit_conn_log_level limit_rate limit_rate_after limit_req limit_req_log_level limit_req_zone limit_zone lingering_time lingering_timeout lock_file log_format log_not_found log_subrequest map_hash_bucket_size map_hash_max_size master_process memcached_bind memcached_buffer_size memcached_connect_timeout memcached_next_upstream memcached_read_timeout memcached_send_timeout memcached_upstream_fail_timeout memcached_upstream_max_fails merge_slashes min_delete_depth modern_browser modern_browser_value msie_padding msie_refresh multi_accept open_file_cache open_file_cache_errors open_file_cache_events open_file_cache_min_uses open_file_cache_valid open_log_file_cache output_buffers override_charset perl perl_modules perl_require perl_set pid pop3_auth pop3_capabilities port_in_redirect postpone_gzipping postpone_output protocol proxy proxy_bind proxy_buffer proxy_buffer_size proxy_buffering proxy_buffers proxy_busy_buffers_size proxy_cache proxy_cache_key proxy_cache_methods proxy_cache_min_uses proxy_cache_path proxy_cache_use_stale proxy_cache_valid proxy_connect_timeout proxy_headers_hash_bucket_size proxy_headers_hash_max_size proxy_hide_header proxy_ignore_client_abort proxy_ignore_headers proxy_intercept_errors proxy_max_temp_file_size proxy_method proxy_next_upstream proxy_pass_error_message proxy_pass_header proxy_pass_request_body proxy_pass_request_headers proxy_read_timeout proxy_redirect proxy_send_lowat proxy_send_timeout proxy_set_body proxy_set_header proxy_ssl_session_reuse proxy_store proxy_store_access proxy_temp_file_write_size proxy_temp_path proxy_timeout proxy_upstream_fail_timeout proxy_upstream_max_fails random_index read_ahead real_ip_header recursive_error_pages request_pool_size reset_timedout_connection resolver resolver_timeout rewrite_log rtsig_overflow_events rtsig_overflow_test rtsig_overflow_threshold rtsig_signo satisfy secure_link_secret send_lowat send_timeout sendfile sendfile_max_chunk server_name_in_redirect server_names_hash_bucket_size server_names_hash_max_size server_tokens set_real_ip_from smtp_auth smtp_capabilities smtp_client_buffer smtp_greeting_delay so_keepalive source_charset ssi ssi_ignore_recycled_buffers ssi_min_file_chunk ssi_silent_errors ssi_types ssi_value_length ssl ssl_certificate ssl_certificate_key ssl_ciphers ssl_client_certificate ssl_crl ssl_dhparam ssl_engine ssl_prefer_server_ciphers ssl_protocols ssl_session_cache ssl_session_timeout ssl_verify_client ssl_verify_depth starttls stub_status sub_filter sub_filter_once sub_filter_types tcp_nodelay tcp_nopush thread_stack_size timeout timer_resolution types_hash_bucket_size types_hash_max_size underscores_in_headers uninitialized_variable_warn use user userid userid_domain userid_expires userid_mark userid_name userid_p3p userid_path userid_service valid_referers variables_hash_bucket_size variables_hash_max_size worker_connections worker_cpu_affinity worker_priority worker_processes worker_rlimit_core worker_rlimit_nofile worker_rlimit_sigpending worker_threads working_directory xclient xml_entities xslt_stylesheet xslt_typesdrew@li229-23"),j=b("http mail events server types location upstream charset_map limit_except if geo map"),k=b("include root server server_name listen internal proxy_pass memcached_pass fastcgi_pass try_files"),l=a.indentUnit;return{startState:function(a){return{tokenize:d,baseIndent:a||0,stack:[]}},token:function(a,b){if(a.eatSpace())return null;h=null;var c=b.tokenize(a,b),d=b.stack[b.stack.length-1];return"hash"==h&&"rule"==d?c="atom":"variable"==c&&("rule"==d?c="number":d&&"@media{"!=d||(c="tag")),"rule"==d&&/^[\{\};]$/.test(h)&&b.stack.pop(),"{"==h?"@media"==d?b.stack[b.stack.length-1]="@media{":b.stack.push("{"):"}"==h?b.stack.pop():"@media"==h?b.stack.push("@media"):"{"==d&&"comment"!=h&&b.stack.push("rule"),c},indent:function(a,b){var c=a.stack.length;return/^\}/.test(b)&&(c-="rule"==a.stack[a.stack.length-1]?2:1),a.baseIndent+c*l},electricChars:"}"}}),a.defineMIME("text/x-nginx-conf","nginx")})},{"../../lib/codemirror":59}],71:[function(a,b,c){!function(d){"object"==typeof c&&"object"==typeof b?d(a("../../lib/codemirror"),a("../htmlmixed/htmlmixed"),a("../clike/clike")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","../htmlmixed/htmlmixed","../clike/clike"],d):d(CodeMirror)}(function(a){"use strict";function b(a){for(var b={},c=a.split(" "),d=0;d\w/,!1)&&(b.tokenize=c([[["->",null]],[[/[\w]+/,"variable"]]],d,e)),"variable-2";for(var f=!1;!a.eol()&&(f||e===!1||!a.match("{$",!1)&&!a.match(/^(\$[a-zA-Z_][a-zA-Z0-9_]*|\$\{)/,!1));){if(!f&&a.match(d)){b.tokenize=null,b.tokStack.pop(),b.tokStack.pop();break}f="\\"==a.next()&&!f}return"string"}var f="abstract and array as break case catch class clone const continue declare default do else elseif enddeclare endfor endforeach endif endswitch endwhile extends final for foreach function global goto if implements interface instanceof namespace new or private protected public static switch throw trait try use var while xor die echo empty exit eval include include_once isset list require require_once return print unset __halt_compiler self static parent yield insteadof finally",g="true false null TRUE FALSE NULL __CLASS__ __DIR__ __FILE__ __LINE__ __METHOD__ __FUNCTION__ __NAMESPACE__ __TRAIT__",h="func_num_args func_get_arg func_get_args strlen strcmp strncmp strcasecmp strncasecmp each error_reporting define defined trigger_error user_error set_error_handler restore_error_handler get_declared_classes get_loaded_extensions extension_loaded get_extension_funcs debug_backtrace constant bin2hex hex2bin sleep usleep time mktime gmmktime strftime gmstrftime strtotime date gmdate getdate localtime checkdate flush wordwrap htmlspecialchars htmlentities html_entity_decode md5 md5_file crc32 getimagesize image_type_to_mime_type phpinfo phpversion phpcredits strnatcmp strnatcasecmp substr_count strspn strcspn strtok strtoupper strtolower strpos strrpos strrev hebrev hebrevc nl2br basename dirname pathinfo stripslashes stripcslashes strstr stristr strrchr str_shuffle str_word_count strcoll substr substr_replace quotemeta ucfirst ucwords strtr addslashes addcslashes rtrim str_replace str_repeat count_chars chunk_split trim ltrim strip_tags similar_text explode implode setlocale localeconv parse_str str_pad chop strchr sprintf printf vprintf vsprintf sscanf fscanf parse_url urlencode urldecode rawurlencode rawurldecode readlink linkinfo link unlink exec system escapeshellcmd escapeshellarg passthru shell_exec proc_open proc_close rand srand getrandmax mt_rand mt_srand mt_getrandmax base64_decode base64_encode abs ceil floor round is_finite is_nan is_infinite bindec hexdec octdec decbin decoct dechex base_convert number_format fmod ip2long long2ip getenv putenv getopt microtime gettimeofday getrusage uniqid quoted_printable_decode set_time_limit get_cfg_var magic_quotes_runtime set_magic_quotes_runtime get_magic_quotes_gpc get_magic_quotes_runtime import_request_variables error_log serialize unserialize memory_get_usage var_dump var_export debug_zval_dump print_r highlight_file show_source highlight_string ini_get ini_get_all ini_set ini_alter ini_restore get_include_path set_include_path restore_include_path setcookie header headers_sent connection_aborted connection_status ignore_user_abort parse_ini_file is_uploaded_file move_uploaded_file intval floatval doubleval strval gettype settype is_null is_resource is_bool is_long is_float is_int is_integer is_double is_real is_numeric is_string is_array is_object is_scalar ereg ereg_replace eregi eregi_replace split spliti join sql_regcase dl pclose popen readfile rewind rmdir umask fclose feof fgetc fgets fgetss fread fopen fpassthru ftruncate fstat fseek ftell fflush fwrite fputs mkdir rename copy tempnam tmpfile file file_get_contents file_put_contents stream_select stream_context_create stream_context_set_params stream_context_set_option stream_context_get_options stream_filter_prepend stream_filter_append fgetcsv flock get_meta_tags stream_set_write_buffer set_file_buffer set_socket_blocking stream_set_blocking socket_set_blocking stream_get_meta_data stream_register_wrapper stream_wrapper_register stream_set_timeout socket_set_timeout socket_get_status realpath fnmatch fsockopen pfsockopen pack unpack get_browser crypt opendir closedir chdir getcwd rewinddir readdir dir glob fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype file_exists is_writable is_writeable is_readable is_executable is_file is_dir is_link stat lstat chown touch clearstatcache mail ob_start ob_flush ob_clean ob_end_flush ob_end_clean ob_get_flush ob_get_clean ob_get_length ob_get_level ob_get_status ob_get_contents ob_implicit_flush ob_list_handlers ksort krsort natsort natcasesort asort arsort sort rsort usort uasort uksort shuffle array_walk count end prev next reset current key min max in_array array_search extract compact array_fill range array_multisort array_push array_pop array_shift array_unshift array_splice array_slice array_merge array_merge_recursive array_keys array_values array_count_values array_reverse array_reduce array_pad array_flip array_change_key_case array_rand array_unique array_intersect array_intersect_assoc array_diff array_diff_assoc array_sum array_filter array_map array_chunk array_key_exists array_intersect_key array_combine array_column pos sizeof key_exists assert assert_options version_compare ftok str_rot13 aggregate session_name session_module_name session_save_path session_id session_regenerate_id session_decode session_register session_unregister session_is_registered session_encode session_start session_destroy session_unset session_set_save_handler session_cache_limiter session_cache_expire session_set_cookie_params session_get_cookie_params session_write_close preg_match preg_match_all preg_replace preg_replace_callback preg_split preg_quote preg_grep overload ctype_alnum ctype_alpha ctype_cntrl ctype_digit ctype_lower ctype_graph ctype_print ctype_punct ctype_space ctype_upper ctype_xdigit virtual apache_request_headers apache_note apache_lookup_uri apache_child_terminate apache_setenv apache_response_headers apache_get_version getallheaders mysql_connect mysql_pconnect mysql_close mysql_select_db mysql_create_db mysql_drop_db mysql_query mysql_unbuffered_query mysql_db_query mysql_list_dbs mysql_list_tables mysql_list_fields mysql_list_processes mysql_error mysql_errno mysql_affected_rows mysql_insert_id mysql_result mysql_num_rows mysql_num_fields mysql_fetch_row mysql_fetch_array mysql_fetch_assoc mysql_fetch_object mysql_data_seek mysql_fetch_lengths mysql_fetch_field mysql_field_seek mysql_free_result mysql_field_name mysql_field_table mysql_field_len mysql_field_type mysql_field_flags mysql_escape_string mysql_real_escape_string mysql_stat mysql_thread_id mysql_client_encoding mysql_get_client_info mysql_get_host_info mysql_get_proto_info mysql_get_server_info mysql_info mysql mysql_fieldname mysql_fieldtable mysql_fieldlen mysql_fieldtype mysql_fieldflags mysql_selectdb mysql_createdb mysql_dropdb mysql_freeresult mysql_numfields mysql_numrows mysql_listdbs mysql_listtables mysql_listfields mysql_db_name mysql_dbname mysql_tablename mysql_table_name pg_connect pg_pconnect pg_close pg_connection_status pg_connection_busy pg_connection_reset pg_host pg_dbname pg_port pg_tty pg_options pg_ping pg_query pg_send_query pg_cancel_query pg_fetch_result pg_fetch_row pg_fetch_assoc pg_fetch_array pg_fetch_object pg_fetch_all pg_affected_rows pg_get_result pg_result_seek pg_result_status pg_free_result pg_last_oid pg_num_rows pg_num_fields pg_field_name pg_field_num pg_field_size pg_field_type pg_field_prtlen pg_field_is_null pg_get_notify pg_get_pid pg_result_error pg_last_error pg_last_notice pg_put_line pg_end_copy pg_copy_to pg_copy_from pg_trace pg_untrace pg_lo_create pg_lo_unlink pg_lo_open pg_lo_close pg_lo_read pg_lo_write pg_lo_read_all pg_lo_import pg_lo_export pg_lo_seek pg_lo_tell pg_escape_string pg_escape_bytea pg_unescape_bytea pg_client_encoding pg_set_client_encoding pg_meta_data pg_convert pg_insert pg_update pg_delete pg_select pg_exec pg_getlastoid pg_cmdtuples pg_errormessage pg_numrows pg_numfields pg_fieldname pg_fieldsize pg_fieldtype pg_fieldnum pg_fieldprtlen pg_fieldisnull pg_freeresult pg_result pg_loreadall pg_locreate pg_lounlink pg_loopen pg_loclose pg_loread pg_lowrite pg_loimport pg_loexport http_response_code get_declared_traits getimagesizefromstring socket_import_stream stream_set_chunk_size trait_exists header_register_callback class_uses session_status session_register_shutdown echo print global static exit array empty eval isset unset die include require include_once require_once json_decode json_encode json_last_error json_last_error_msg curl_close curl_copy_handle curl_errno curl_error curl_escape curl_exec curl_file_create curl_getinfo curl_init curl_multi_add_handle curl_multi_close curl_multi_exec curl_multi_getcontent curl_multi_info_read curl_multi_init curl_multi_remove_handle curl_multi_select curl_multi_setopt curl_multi_strerror curl_pause curl_reset curl_setopt_array curl_setopt curl_share_close curl_share_init curl_share_setopt curl_strerror curl_unescape curl_version mysqli_affected_rows mysqli_autocommit mysqli_change_user mysqli_character_set_name mysqli_close mysqli_commit mysqli_connect_errno mysqli_connect_error mysqli_connect mysqli_data_seek mysqli_debug mysqli_dump_debug_info mysqli_errno mysqli_error_list mysqli_error mysqli_fetch_all mysqli_fetch_array mysqli_fetch_assoc mysqli_fetch_field_direct mysqli_fetch_field mysqli_fetch_fields mysqli_fetch_lengths mysqli_fetch_object mysqli_fetch_row mysqli_field_count mysqli_field_seek mysqli_field_tell mysqli_free_result mysqli_get_charset mysqli_get_client_info mysqli_get_client_stats mysqli_get_client_version mysqli_get_connection_stats mysqli_get_host_info mysqli_get_proto_info mysqli_get_server_info mysqli_get_server_version mysqli_info mysqli_init mysqli_insert_id mysqli_kill mysqli_more_results mysqli_multi_query mysqli_next_result mysqli_num_fields mysqli_num_rows mysqli_options mysqli_ping mysqli_prepare mysqli_query mysqli_real_connect mysqli_real_escape_string mysqli_real_query mysqli_reap_async_query mysqli_refresh mysqli_rollback mysqli_select_db mysqli_set_charset mysqli_set_local_infile_default mysqli_set_local_infile_handler mysqli_sqlstate mysqli_ssl_set mysqli_stat mysqli_stmt_init mysqli_store_result mysqli_thread_id mysqli_thread_safe mysqli_use_result mysqli_warning_count"; +a.registerHelper("hintWords","php",[f,g,h].join(" ").split(" ")),a.registerHelper("wordChars","php",/[\w$]/);var i={name:"clike",helperType:"php",keywords:b(f),blockKeywords:b("catch do else elseif for foreach if switch try while finally"),defKeywords:b("class function interface namespace trait"),atoms:b(g),builtin:b(h),multiLineStrings:!0,hooks:{$:function(a){return a.eatWhile(/[\w\$_]/),"variable-2"},"<":function(a,b){var c;if(c=a.match(/<<\s*/)){var e=a.eat(/['"]/);a.eatWhile(/[\w\.]/);var f=a.current().slice(c[0].length+(e?2:1));if(e&&a.eat(e),f)return(b.tokStack||(b.tokStack=[])).push(f,0),b.tokenize=d(f,"'"!=e),"string"}return!1},"#":function(a){for(;!a.eol()&&!a.match("?>",!1);)a.next();return"comment"},"/":function(a){if(a.eat("/")){for(;!a.eol()&&!a.match("?>",!1);)a.next();return"comment"}return!1},'"':function(a,b){return(b.tokStack||(b.tokStack=[])).push('"',0),b.tokenize=d('"'),"string"},"{":function(a,b){return b.tokStack&&b.tokStack.length&&b.tokStack[b.tokStack.length-1]++,!1},"}":function(a,b){return b.tokStack&&b.tokStack.length>0&&!--b.tokStack[b.tokStack.length-1]&&(b.tokenize=d(b.tokStack[b.tokStack.length-2])),!1}}};a.defineMode("php",function(b,c){function d(b,c){var d=c.curMode==f;if(b.sol()&&c.pending&&'"'!=c.pending&&"'"!=c.pending&&(c.pending=null),d)return d&&null==c.php.tokenize&&b.match("?>")?(c.curMode=e,c.curState=c.html,c.php.context.prev||(c.php=null),"meta"):f.token(b,c.curState);if(b.match(/^<\?\w*/))return c.curMode=f,c.php||(c.php=a.startState(f,e.indent(c.html,""))),c.curState=c.php,"meta";if('"'==c.pending||"'"==c.pending){for(;!b.eol()&&b.next()!=c.pending;);var g="string"}else if(c.pending&&b.pos/.test(i)?c.pending=h[0]:c.pending={end:b.pos,style:g},b.backUp(i.length-j)),g}var e=a.getMode(b,"text/html"),f=a.getMode(b,i);return{startState:function(){var b=a.startState(e),d=c.startOpen?a.startState(f):null;return{html:b,php:d,curMode:c.startOpen?f:e,curState:c.startOpen?d:b,pending:null}},copyState:function(b){var c,d=b.html,g=a.copyState(e,d),h=b.php,i=h&&a.copyState(f,h);return c=b.curMode==e?g:i,{html:g,php:i,curMode:b.curMode,curState:c,pending:b.pending}},token:d,indent:function(a,b){return a.curMode!=f&&/^\s*<\//.test(b)||a.curMode==f&&/^\?>/.test(b)?e.indent(a.html,b):a.curMode.indent(a.curState,b)},blockCommentStart:"/*",blockCommentEnd:"*/",lineComment:"//",innerMode:function(a){return{state:a.curState,mode:a.curMode}}}},"htmlmixed","clike"),a.defineMIME("application/x-httpd-php","php"),a.defineMIME("application/x-httpd-php-open",{name:"php",startOpen:!0}),a.defineMIME("text/x-php",i)})},{"../../lib/codemirror":59,"../clike/clike":60,"../htmlmixed/htmlmixed":64}],72:[function(a,b,c){!function(d){"object"==typeof c&&"object"==typeof b?d(a("../../lib/codemirror"),a("../css/css")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","../css/css"],d):d(CodeMirror)}(function(a){"use strict";a.defineMode("sass",function(b){function c(a){return new RegExp("^"+a.join("|"))}function d(a){return!a.peek()||a.match(/\s+$/,!1)}function e(a,b){var c=a.peek();return")"===c?(a.next(),b.tokenizer=k,"operator"):"("===c?(a.next(),a.eatSpace(),"operator"):"'"===c||'"'===c?(b.tokenizer=g(a.next()),"string"):(b.tokenizer=g(")",!1),"string")}function f(a,b){return function(c,d){return c.sol()&&c.indentation()<=a?(d.tokenizer=k,k(c,d)):(b&&c.skipTo("*/")?(c.next(),c.next(),d.tokenizer=k):c.skipToEnd(),"comment")}}function g(a,b){function c(e,f){var g=e.next(),i=e.peek(),j=e.string.charAt(e.pos-2),l="\\"!==g&&i===a||g===a&&"\\"!==j;return l?(g!==a&&b&&e.next(),d(e)&&(f.cursorHalf=0),f.tokenizer=k,"string"):"#"===g&&"{"===i?(f.tokenizer=h(c),e.next(),"operator"):"string"}return null==b&&(b=!0),c}function h(a){return function(b,c){return"}"===b.peek()?(b.next(),c.tokenizer=a,"operator"):k(b,c)}}function i(a){if(0==a.indentCount){a.indentCount++;var c=a.scopes[0].offset,d=c+b.indentUnit;a.scopes.unshift({offset:d})}}function j(a){1!=a.scopes.length&&a.scopes.shift()}function k(a,b){var c=a.peek();if(a.match("/*"))return b.tokenizer=f(a.indentation(),!0),b.tokenizer(a,b);if(a.match("//"))return b.tokenizer=f(a.indentation(),!1),b.tokenizer(a,b);if(a.match("#{"))return b.tokenizer=h(k),"operator";if('"'===c||"'"===c)return a.next(),b.tokenizer=g(c),"string";if(b.cursorHalf){if("#"===c&&(a.next(),a.match(/[0-9a-fA-F]{6}|[0-9a-fA-F]{3}/)))return d(a)&&(b.cursorHalf=0),"number";if(a.match(/^-?[0-9\.]+/))return d(a)&&(b.cursorHalf=0),"number";if(a.match(/^(px|em|in)\b/))return d(a)&&(b.cursorHalf=0),"unit";if(a.match(t))return d(a)&&(b.cursorHalf=0),"keyword";if(a.match(/^url/)&&"("===a.peek())return b.tokenizer=e,d(a)&&(b.cursorHalf=0),"atom";if("$"===c)return a.next(),a.eatWhile(/[\w-]/),d(a)&&(b.cursorHalf=0),"variable-2";if("!"===c)return a.next(),b.cursorHalf=0,a.match(/^[\w]+/)?"keyword":"operator";if(a.match(v))return d(a)&&(b.cursorHalf=0),"operator";if(a.eatWhile(/[\w-]/))return d(a)&&(b.cursorHalf=0),m=a.current().toLowerCase(),q.hasOwnProperty(m)?"atom":p.hasOwnProperty(m)?"keyword":o.hasOwnProperty(m)?(b.prevProp=a.current().toLowerCase(),"property"):"tag";if(d(a))return b.cursorHalf=0,null}else{if("-"===c&&a.match(/^-\w+-/))return"meta";if("."===c){if(a.next(),a.match(/^[\w-]+/))return i(b),"qualifier";if("#"===a.peek())return i(b),"tag"}if("#"===c){if(a.next(),a.match(/^[\w-]+/))return i(b),"builtin";if("#"===a.peek())return i(b),"tag"}if("$"===c)return a.next(),a.eatWhile(/[\w-]/),"variable-2";if(a.match(/^-?[0-9\.]+/))return"number";if(a.match(/^(px|em|in)\b/))return"unit";if(a.match(t))return"keyword";if(a.match(/^url/)&&"("===a.peek())return b.tokenizer=e,"atom";if("="===c&&a.match(/^=[\w-]+/))return i(b),"meta";if("+"===c&&a.match(/^\+[\w-]+/))return"variable-3";if("@"===c&&a.match(/@extend/)&&(a.match(/\s*[\w]/)||j(b)),a.match(/^@(else if|if|media|else|for|each|while|mixin|function)/))return i(b),"def";if("@"===c)return a.next(),a.eatWhile(/[\w-]/),"def";if(a.eatWhile(/[\w-]/)){if(a.match(/ *: *[\w-\+\$#!\("']/,!1)){m=a.current().toLowerCase();var l=b.prevProp+"-"+m;return o.hasOwnProperty(l)?"property":o.hasOwnProperty(m)?(b.prevProp=m,"property"):r.hasOwnProperty(m)?"property":"tag"}return a.match(/ *:/,!1)?(i(b),b.cursorHalf=1,b.prevProp=a.current().toLowerCase(),"property"):a.match(/ *,/,!1)?"tag":(i(b),"tag")}if(":"===c)return a.match(w)?"variable-3":(a.next(),b.cursorHalf=1,"operator")}return a.match(v)?"operator":(a.next(),null)}function l(a,c){a.sol()&&(c.indentCount=0);var d=c.tokenizer(a,c),e=a.current();if("@return"!==e&&"}"!==e||j(c),null!==d){for(var f=a.pos-e.length,g=f+b.indentUnit*c.indentCount,h=[],i=0;i","<","==",">=","<=","\\+","-","\\!=","/","\\*","%","and","or","not",";","\\{","\\}",":"],v=c(u),w=/^::?[a-zA-Z_][\w\-]*/;return{startState:function(){return{tokenizer:k,scopes:[{offset:0,type:"sass"}],indentCount:0,cursorHalf:0,definedVars:[],definedMixins:[]}},token:function(a,b){var c=l(a,b);return b.lastToken={style:c,content:a.current()},c},indent:function(a){return a.scopes[0].offset}}},"css"),a.defineMIME("text/x-sass","sass")})},{"../../lib/codemirror":59,"../css/css":61}],73:[function(a,b,c){!function(d){"object"==typeof c&&"object"==typeof b?d(a("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],d):d(CodeMirror)}(function(a){"use strict";a.defineMode("shell",function(){function a(a,b){for(var c=b.split(" "),d=0;d1&&a.eat("$");var e=a.next();return/['"({]/.test(e)?(b.tokens[0]=c(e,"("==e?"quote":"{"==e?"def":"string"),d(a,b)):(/\d/.test(e)||a.eatWhile(/\w/),b.tokens.shift(),"def")};return{startState:function(){return{tokens:[]}},token:function(a,b){return d(a,b)},closeBrackets:"()[]{}''\"\"``",lineComment:"#",fold:"brace"}}),a.defineMIME("text/x-sh","shell"),a.defineMIME("application/x-sh","shell")})},{"../../lib/codemirror":59}],74:[function(a,b,c){!function(d){"object"==typeof c&&"object"==typeof b?d(a("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],d):d(CodeMirror)}(function(a){"use strict";a.defineMode("sql",function(b,c){function d(a,b){var c=a.next();if(o[c]){var d=o[c](a,b);if(d!==!1)return d}if(n.hexNumber&&("0"==c&&a.match(/^[xX][0-9a-fA-F]+/)||("x"==c||"X"==c)&&a.match(/^'[0-9a-fA-F]+'/)))return"number";if(n.binaryNumber&&(("b"==c||"B"==c)&&a.match(/^'[01]+'/)||"0"==c&&a.match(/^b[01]+/)))return"number";if(c.charCodeAt(0)>47&&c.charCodeAt(0)<58)return a.match(/^[0-9]*(\.[0-9]+)?([eE][-+]?[0-9]+)?/),n.decimallessFloat&&a.match(/^\.(?!\.)/),"number";if("?"==c&&(a.eatSpace()||a.eol()||a.eat(";")))return"variable-3";if("'"==c||'"'==c&&n.doubleQuote)return b.tokenize=e(c),b.tokenize(a,b);if((n.nCharCast&&("n"==c||"N"==c)||n.charsetCast&&"_"==c&&a.match(/[a-z][a-z0-9]*/i))&&("'"==a.peek()||'"'==a.peek()))return"keyword";if(/^[\(\),\;\[\]]/.test(c))return null;if(n.commentSlashSlash&&"/"==c&&a.eat("/"))return a.skipToEnd(),"comment";if(n.commentHash&&"#"==c||"-"==c&&a.eat("-")&&(!n.commentSpaceRequired||a.eat(" ")))return a.skipToEnd(),"comment";if("/"==c&&a.eat("*"))return b.tokenize=f(1),b.tokenize(a,b);if("."!=c){if(m.test(c))return a.eatWhile(m),null;if("{"==c&&(a.match(/^( )*(d|D|t|T|ts|TS)( )*'[^']*'( )*}/)||a.match(/^( )*(d|D|t|T|ts|TS)( )*"[^"]*"( )*}/)))return"number";a.eatWhile(/^[_\w\d]/);var g=a.current().toLowerCase();return p.hasOwnProperty(g)&&(a.match(/^( )+'[^']*'/)||a.match(/^( )+"[^"]*"/))?"number":j.hasOwnProperty(g)?"atom":k.hasOwnProperty(g)?"builtin":l.hasOwnProperty(g)?"keyword":i.hasOwnProperty(g)?"string-2":null}return n.zerolessFloat&&a.match(/^(?:\d+(?:e[+-]?\d+)?)/i)?"number":a.match(/^\.+/)?null:n.ODBCdotTable&&a.match(/^[\w\d_]+/)?"variable-2":void 0}function e(a){return function(b,c){for(var e,f=!1;null!=(e=b.next());){if(e==a&&!f){c.tokenize=d;break}f=!f&&"\\"==e}return"string"}}function f(a){return function(b,c){var e=b.match(/^.*?(\/\*|\*\/)/);return e?"/*"==e[1]?c.tokenize=f(a+1):a>1?c.tokenize=f(a-1):c.tokenize=d:b.skipToEnd(),"comment"}}function g(a,b,c){b.context={prev:b.context,indent:a.indentation(),col:a.column(),type:c}}function h(a){a.indent=a.context.indent,a.context=a.context.prev}var i=c.client||{},j=c.atoms||{"false":!0,"true":!0,"null":!0},k=c.builtin||{},l=c.keywords||{},m=c.operatorChars||/^[*+\-%<>!=&|~^]/,n=c.support||{},o=c.hooks||{},p=c.dateSQL||{date:!0,time:!0,timestamp:!0};return{startState:function(){return{tokenize:d,context:null}},token:function(a,b){if(a.sol()&&b.context&&null==b.context.align&&(b.context.align=!1),b.tokenize==d&&a.eatSpace())return null;var c=b.tokenize(a,b);if("comment"==c)return c;b.context&&null==b.context.align&&(b.context.align=!0);var e=a.current();return"("==e?g(a,b,")"):"["==e?g(a,b,"]"):b.context&&b.context.type==e&&h(b),c},indent:function(c,d){var e=c.context;if(!e)return a.Pass;var f=d.charAt(0)==e.type;return e.align?e.col+(f?0:1):e.indent+(f?0:b.indentUnit)},blockCommentStart:"/*",blockCommentEnd:"*/",lineComment:n.commentSlashSlash?"//":n.commentHash?"#":"--"}}),function(){function b(a){for(var b;null!=(b=a.next());)if("`"==b&&!a.eat("`"))return"variable-2";return a.backUp(a.current().length-1),a.eatWhile(/\w/)?"variable-2":null}function c(a){for(var b;null!=(b=a.next());)if('"'==b&&!a.eat('"'))return"variable-2";return a.backUp(a.current().length-1),a.eatWhile(/\w/)?"variable-2":null}function d(a){return a.eat("@")&&(a.match(/^session\./),a.match(/^local\./),a.match(/^global\./)),a.eat("'")?(a.match(/^.*'/),"variable-2"):a.eat('"')?(a.match(/^.*"/),"variable-2"):a.eat("`")?(a.match(/^.*`/),"variable-2"):a.match(/^[0-9a-zA-Z$\.\_]+/)?"variable-2":null}function e(a){return a.eat("N")?"atom":a.match(/^[a-zA-Z.#!?]/)?"variable-2":null}function f(a){for(var b={},c=a.split(" "),d=0;d!=]/,dateSQL:f("date time timestamp"),support:f("ODBCdotTable doubleQuote binaryNumber hexNumber")}),a.defineMIME("text/x-mssql",{name:"sql",client:f("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"),keywords:f(g+"begin trigger proc view index for add constraint key primary foreign collate clustered nonclustered declare exec"),builtin:f("bigint numeric bit smallint decimal smallmoney int tinyint money float real char varchar text nchar nvarchar ntext binary varbinary image cursor timestamp hierarchyid uniqueidentifier sql_variant xml table "),atoms:f("false true null unknown"),operatorChars:/^[*+\-%<>!=]/,dateSQL:f("date datetimeoffset datetime2 smalldatetime datetime time"),hooks:{"@":d}}),a.defineMIME("text/x-mysql",{name:"sql",client:f("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"),keywords:f(g+"accessible action add after algorithm all analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general get global grant grants group group_concat handler hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show signal slave slow smallint snapshot soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"),builtin:f("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"),atoms:f("false true null unknown"),operatorChars:/^[*+\-%<>!=&|^]/,dateSQL:f("date time timestamp"),support:f("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"),hooks:{"@":d,"`":b,"\\":e}}),a.defineMIME("text/x-mariadb",{name:"sql",client:f("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"),keywords:f(g+"accessible action add after algorithm all always analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general generated get global grant grants group groupby_concat handler hard hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password persistent phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show shutdown signal slave slow smallint snapshot soft soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views virtual warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"),builtin:f("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"),atoms:f("false true null unknown"),operatorChars:/^[*+\-%<>!=&|^]/,dateSQL:f("date time timestamp"),support:f("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"),hooks:{"@":d,"`":b,"\\":e}}),a.defineMIME("text/x-sqlite",{name:"sql",client:f("auth backup bail binary changes check clone databases dbinfo dump echo eqp exit explain fullschema headers help import imposter indexes iotrace limit lint load log mode nullvalue once open output print prompt quit read restore save scanstats schema separator session shell show stats system tables testcase timeout timer trace vfsinfo vfslist vfsname width"),keywords:f(g+"abort action add after all analyze attach autoincrement before begin cascade case cast check collate column commit conflict constraint cross current_date current_time current_timestamp database default deferrable deferred detach each else end escape except exclusive exists explain fail for foreign full glob if ignore immediate index indexed initially inner instead intersect isnull key left limit match natural no notnull null of offset outer plan pragma primary query raise recursive references regexp reindex release rename replace restrict right rollback row savepoint temp temporary then to transaction trigger unique using vacuum view virtual when with without"),builtin:f("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text clob bigint int int2 int8 integer float double char varchar date datetime year unsigned signed numeric real"),atoms:f("null current_date current_time current_timestamp"),operatorChars:/^[*+\-%<>!=&|\/~]/,dateSQL:f("date time timestamp datetime"),support:f("decimallessFloat zerolessFloat"),identifierQuote:'"',hooks:{"@":d,":":d,"?":d,$:d,'"':c,"`":b}}),a.defineMIME("text/x-cassandra",{name:"sql",client:{},keywords:f("add all allow alter and any apply as asc authorize batch begin by clustering columnfamily compact consistency count create custom delete desc distinct drop each_quorum exists filtering from grant if in index insert into key keyspace keyspaces level limit local_one local_quorum modify nan norecursive nosuperuser not of on one order password permission permissions primary quorum rename revoke schema select set storage superuser table three to token truncate ttl two type unlogged update use user users using values where with writetime"),builtin:f("ascii bigint blob boolean counter decimal double float frozen inet int list map static text timestamp timeuuid tuple uuid varchar varint"),atoms:f("false true infinity NaN"),operatorChars:/^[<>=]/,dateSQL:{},support:f("commentSlashSlash decimallessFloat"),hooks:{}}),a.defineMIME("text/x-plsql",{name:"sql",client:f("appinfo arraysize autocommit autoprint autorecovery autotrace blockterminator break btitle cmdsep colsep compatibility compute concat copycommit copytypecheck define describe echo editfile embedded escape exec execute feedback flagger flush heading headsep instance linesize lno loboffset logsource long longchunksize markup native newpage numformat numwidth pagesize pause pno recsep recsepchar release repfooter repheader serveroutput shiftinout show showmode size spool sqlblanklines sqlcase sqlcode sqlcontinue sqlnumber sqlpluscompatibility sqlprefix sqlprompt sqlterminator suffix tab term termout time timing trimout trimspool ttitle underline verify version wrap"),keywords:f("abort accept access add all alter and any array arraylen as asc assert assign at attributes audit authorization avg base_table begin between binary_integer body boolean by case cast char char_base check close cluster clusters colauth column comment commit compress connect connected constant constraint crash create current currval cursor data_base database date dba deallocate debugoff debugon decimal declare default definition delay delete desc digits dispose distinct do drop else elseif elsif enable end entry escape exception exception_init exchange exclusive exists exit external fast fetch file for force form from function generic goto grant group having identified if immediate in increment index indexes indicator initial initrans insert interface intersect into is key level library like limited local lock log logging long loop master maxextents maxtrans member minextents minus mislabel mode modify multiset new next no noaudit nocompress nologging noparallel not nowait number_base object of off offline on online only open option or order out package parallel partition pctfree pctincrease pctused pls_integer positive positiven pragma primary prior private privileges procedure public raise range raw read rebuild record ref references refresh release rename replace resource restrict return returning returns reverse revoke rollback row rowid rowlabel rownum rows run savepoint schema segment select separate session set share snapshot some space split sql start statement storage subtype successful synonym tabauth table tables tablespace task terminate then to trigger truncate type union unique unlimited unrecoverable unusable update use using validate value values variable view views when whenever where while with work"),builtin:f("abs acos add_months ascii asin atan atan2 average bfile bfilename bigserial bit blob ceil character chartorowid chr clob concat convert cos cosh count dec decode deref dual dump dup_val_on_index empty error exp false float floor found glb greatest hextoraw initcap instr instrb int integer isopen last_day least length lengthb ln lower lpad ltrim lub make_ref max min mlslabel mod months_between natural naturaln nchar nclob new_time next_day nextval nls_charset_decl_len nls_charset_id nls_charset_name nls_initcap nls_lower nls_sort nls_upper nlssort no_data_found notfound null number numeric nvarchar2 nvl others power rawtohex real reftohex round rowcount rowidtochar rowtype rpad rtrim serial sign signtype sin sinh smallint soundex sqlcode sqlerrm sqrt stddev string substr substrb sum sysdate tan tanh to_char text to_date to_label to_multi_byte to_number to_single_byte translate true trunc uid unlogged upper user userenv varchar varchar2 variance varying vsize xml"),operatorChars:/^[*+\-%<>!=~]/,dateSQL:f("date time timestamp"),support:f("doubleQuote nCharCast zerolessFloat binaryNumber hexNumber")}),a.defineMIME("text/x-hive",{name:"sql",keywords:f("select alter $elem$ $key$ $value$ add after all analyze and archive as asc before between binary both bucket buckets by cascade case cast change cluster clustered clusterstatus collection column columns comment compute concatenate continue create cross cursor data database databases dbproperties deferred delete delimited desc describe directory disable distinct distribute drop else enable end escaped exclusive exists explain export extended external false fetch fields fileformat first format formatted from full function functions grant group having hold_ddltime idxproperties if import in index indexes inpath inputdriver inputformat insert intersect into is items join keys lateral left like limit lines load local location lock locks mapjoin materialized minus msck no_drop nocompress not of offline on option or order out outer outputdriver outputformat overwrite partition partitioned partitions percent plus preserve procedure purge range rcfile read readonly reads rebuild recordreader recordwriter recover reduce regexp rename repair replace restrict revoke right rlike row schema schemas semi sequencefile serde serdeproperties set shared show show_database sort sorted ssl statistics stored streamtable table tables tablesample tblproperties temporary terminated textfile then tmp to touch transform trigger true unarchive undo union uniquejoin unlock update use using utc utc_tmestamp view when where while with"),builtin:f("bool boolean long timestamp tinyint smallint bigint int float double date datetime unsigned string array struct map uniontype"),atoms:f("false true null unknown"),operatorChars:/^[*+\-%<>!=]/,dateSQL:f("date timestamp"),support:f("ODBCdotTable doubleQuote binaryNumber hexNumber")}),a.defineMIME("text/x-pgsql",{name:"sql",client:f("source"),keywords:f(g+"a abort abs absent absolute access according action ada add admin after aggregate all allocate also always analyse analyze any are array array_agg array_max_cardinality asensitive assertion assignment asymmetric at atomic attribute attributes authorization avg backward base64 before begin begin_frame begin_partition bernoulli binary bit_length blob blocked bom both breadth c cache call called cardinality cascade cascaded case cast catalog catalog_name ceil ceiling chain characteristics characters character_length character_set_catalog character_set_name character_set_schema char_length check checkpoint class class_origin clob close cluster coalesce cobol collate collation collation_catalog collation_name collation_schema collect column columns column_name command_function command_function_code comment comments commit committed concurrently condition condition_number configuration conflict connect connection connection_name constraint constraints constraint_catalog constraint_name constraint_schema constructor contains content continue control conversion convert copy corr corresponding cost covar_pop covar_samp cross csv cube cume_dist current current_catalog current_date current_default_transform_group current_path current_role current_row current_schema current_time current_timestamp current_transform_group_for_type current_user cursor cursor_name cycle data database datalink datetime_interval_code datetime_interval_precision day db deallocate dec declare default defaults deferrable deferred defined definer degree delimiter delimiters dense_rank depth deref derived describe descriptor deterministic diagnostics dictionary disable discard disconnect dispatch dlnewcopy dlpreviouscopy dlurlcomplete dlurlcompleteonly dlurlcompletewrite dlurlpath dlurlpathonly dlurlpathwrite dlurlscheme dlurlserver dlvalue do document domain dynamic dynamic_function dynamic_function_code each element else empty enable encoding encrypted end end-exec end_frame end_partition enforced enum equals escape event every except exception exclude excluding exclusive exec execute exists exp explain expression extension external extract false family fetch file filter final first first_value flag float floor following for force foreign fortran forward found frame_row free freeze fs full function functions fusion g general generated get global go goto grant granted greatest grouping groups handler header hex hierarchy hold hour id identity if ignore ilike immediate immediately immutable implementation implicit import including increment indent index indexes indicator inherit inherits initially inline inner inout input insensitive instance instantiable instead integrity intersect intersection invoker isnull isolation k key key_member key_type label lag language large last last_value lateral lead leading leakproof least left length level library like_regex link listen ln load local localtime localtimestamp location locator lock locked logged lower m map mapping match matched materialized max maxvalue max_cardinality member merge message_length message_octet_length message_text method min minute minvalue mod mode modifies module month more move multiset mumps name names namespace national natural nchar nclob nesting new next nfc nfd nfkc nfkd nil no none normalize normalized nothing notify notnull nowait nth_value ntile null nullable nullif nulls number object occurrences_regex octets octet_length of off offset oids old only open operator option options ordering ordinality others out outer output over overlaps overlay overriding owned owner p pad parallel parameter parameter_mode parameter_name parameter_ordinal_position parameter_specific_catalog parameter_specific_name parameter_specific_schema parser partial partition pascal passing passthrough password percent percentile_cont percentile_disc percent_rank period permission placing plans pli policy portion position position_regex power precedes preceding prepare prepared preserve primary prior privileges procedural procedure program public quote range rank read reads reassign recheck recovery recursive ref references referencing refresh regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy regr_syy reindex relative release rename repeatable replace replica requiring reset respect restart restore restrict restricted result return returned_cardinality returned_length returned_octet_length returned_sqlstate returning returns revoke right role rollback rollup routine routine_catalog routine_name routine_schema row rows row_count row_number rule savepoint scale schema schema_name scope scope_catalog scope_name scope_schema scroll search second section security selective self sensitive sequence sequences serializable server server_name session session_user setof sets share show similar simple size skip snapshot some source space specific specifictype specific_name sql sqlcode sqlerror sqlexception sqlstate sqlwarning sqrt stable standalone start state statement static statistics stddev_pop stddev_samp stdin stdout storage strict strip structure style subclass_origin submultiset substring substring_regex succeeds sum symmetric sysid system system_time system_user t tables tablesample tablespace table_name temp template temporary then ties timezone_hour timezone_minute to token top_level_count trailing transaction transactions_committed transactions_rolled_back transaction_active transform transforms translate translate_regex translation treat trigger trigger_catalog trigger_name trigger_schema trim trim_array true truncate trusted type types uescape unbounded uncommitted under unencrypted unique unknown unlink unlisten unlogged unnamed unnest until untyped upper uri usage user user_defined_type_catalog user_defined_type_code user_defined_type_name user_defined_type_schema using vacuum valid validate validator value value_of varbinary variadic var_pop var_samp verbose version versioning view views volatile when whenever whitespace width_bucket window within work wrapper write xmlagg xmlattributes xmlbinary xmlcast xmlcomment xmlconcat xmldeclaration xmldocument xmlelement xmlexists xmlforest xmliterate xmlnamespaces xmlparse xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltext xmlvalidate year yes loop repeat attach path depends detach zone"), +builtin:f("bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float8 inet integer int int4 interval json jsonb line lseg macaddr macaddr8 money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time without zone with timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml"),atoms:f("false true null unknown"),operatorChars:/^[*+\-%<>!=&|^\/#@?~]/,dateSQL:f("date time timestamp"),support:f("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast")}),a.defineMIME("text/x-gql",{name:"sql",keywords:f("ancestor and asc by contains desc descendant distinct from group has in is limit offset on order select superset where"),atoms:f("false true"),builtin:f("blob datetime first key __key__ string integer double boolean null"),operatorChars:/^[*+\-%<>!=]/}),a.defineMIME("text/x-gpsql",{name:"sql",client:f("source"),keywords:f("abort absolute access action active add admin after aggregate all also alter always analyse analyze and any array as asc assertion assignment asymmetric at authorization backward before begin between bigint binary bit boolean both by cache called cascade cascaded case cast chain char character characteristics check checkpoint class close cluster coalesce codegen collate column comment commit committed concurrency concurrently configuration connection constraint constraints contains content continue conversion copy cost cpu_rate_limit create createdb createexttable createrole createuser cross csv cube current current_catalog current_date current_role current_schema current_time current_timestamp current_user cursor cycle data database day deallocate dec decimal declare decode default defaults deferrable deferred definer delete delimiter delimiters deny desc dictionary disable discard distinct distributed do document domain double drop dxl each else enable encoding encrypted end enum errors escape every except exchange exclude excluding exclusive execute exists explain extension external extract false family fetch fields filespace fill filter first float following for force foreign format forward freeze from full function global grant granted greatest group group_id grouping handler hash having header hold host hour identity if ignore ilike immediate immutable implicit in including inclusive increment index indexes inherit inherits initially inline inner inout input insensitive insert instead int integer intersect interval into invoker is isnull isolation join key language large last leading least left level like limit list listen load local localtime localtimestamp location lock log login mapping master match maxvalue median merge minute minvalue missing mode modifies modify month move name names national natural nchar new newline next no nocreatedb nocreateexttable nocreaterole nocreateuser noinherit nologin none noovercommit nosuperuser not nothing notify notnull nowait null nullif nulls numeric object of off offset oids old on only operator option options or order ordered others out outer over overcommit overlaps overlay owned owner parser partial partition partitions passing password percent percentile_cont percentile_disc placing plans position preceding precision prepare prepared preserve primary prior privileges procedural procedure protocol queue quote randomly range read readable reads real reassign recheck recursive ref references reindex reject relative release rename repeatable replace replica reset resource restart restrict returning returns revoke right role rollback rollup rootpartition row rows rule savepoint scatter schema scroll search second security segment select sequence serializable session session_user set setof sets share show similar simple smallint some split sql stable standalone start statement statistics stdin stdout storage strict strip subpartition subpartitions substring superuser symmetric sysid system table tablespace temp template temporary text then threshold ties time timestamp to trailing transaction treat trigger trim true truncate trusted type unbounded uncommitted unencrypted union unique unknown unlisten until update user using vacuum valid validation validator value values varchar variadic varying verbose version view volatile web when where whitespace window with within without work writable write xml xmlattributes xmlconcat xmlelement xmlexists xmlforest xmlparse xmlpi xmlroot xmlserialize year yes zone"),builtin:f("bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float float8 inet integer int int4 interval json jsonb line lseg macaddr macaddr8 money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time without zone with timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml"),atoms:f("false true null unknown"),operatorChars:/^[*+\-%<>!=&|^\/#@?~]/,dateSQL:f("date time timestamp"),support:f("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast")}),a.defineMIME("text/x-sparksql",{name:"sql",keywords:f("add after all alter analyze and anti archive array as asc at between bucket buckets by cache cascade case cast change clear cluster clustered codegen collection column columns comment commit compact compactions compute concatenate cost create cross cube current current_date current_timestamp database databases datata dbproperties defined delete delimited desc describe dfs directories distinct distribute drop else end escaped except exchange exists explain export extended external false fields fileformat first following for format formatted from full function functions global grant group grouping having if ignore import in index indexes inner inpath inputformat insert intersect interval into is items join keys last lateral lazy left like limit lines list load local location lock locks logical macro map minus msck natural no not null nulls of on option options or order out outer outputformat over overwrite partition partitioned partitions percent preceding principals purge range recordreader recordwriter recover reduce refresh regexp rename repair replace reset restrict revoke right rlike role roles rollback rollup row rows schema schemas select semi separated serde serdeproperties set sets show skewed sort sorted start statistics stored stratify struct table tables tablesample tblproperties temp temporary terminated then to touch transaction transactions transform true truncate unarchive unbounded uncache union unlock unset use using values view when where window with"),builtin:f("tinyint smallint int bigint boolean float double string binary timestamp decimal array map struct uniontype delimited serde sequencefile textfile rcfile inputformat outputformat"),atoms:f("false true null"),operatorChars:/^[*+\-%<>!=~&|^]/,dateSQL:f("date time timestamp"),support:f("ODBCdotTable doubleQuote zerolessFloat")})}()})},{"../../lib/codemirror":59}],75:[function(a,b,c){!function(d){"object"==typeof c&&"object"==typeof b?d(a("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],d):d(CodeMirror)}(function(a){"use strict";var b={autoSelfClosers:{area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},implicitlyClosed:{dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},contextGrabbers:{dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}},doNotIndent:{pre:!0},allowUnquoted:!0,allowMissing:!0,caseFold:!0},c={autoSelfClosers:{},implicitlyClosed:{},contextGrabbers:{},doNotIndent:{},allowUnquoted:!1,allowMissing:!1,caseFold:!1};a.defineMode("xml",function(d,e){function f(a,b){function c(c){return b.tokenize=c,c(a,b)}var d=a.next();if("<"==d)return a.eat("!")?a.eat("[")?a.match("CDATA[")?c(i("atom","]]>")):null:a.match("--")?c(i("comment","-->")):a.match("DOCTYPE",!0,!0)?(a.eatWhile(/[\w\._\-]/),c(j(1))):null:a.eat("?")?(a.eatWhile(/[\w\._\-]/),b.tokenize=i("meta","?>"),"meta"):(A=a.eat("/")?"closeTag":"openTag",b.tokenize=g,"tag bracket");if("&"==d){var e;return e=a.eat("#")?a.eat("x")?a.eatWhile(/[a-fA-F\d]/)&&a.eat(";"):a.eatWhile(/[\d]/)&&a.eat(";"):a.eatWhile(/[\w\.\-:]/)&&a.eat(";"),e?"atom":"error"}return a.eatWhile(/[^&<]/),null}function g(a,b){var c=a.next();if(">"==c||"/"==c&&a.eat(">"))return b.tokenize=f,A=">"==c?"endTag":"selfcloseTag","tag bracket";if("="==c)return A="equals",null;if("<"==c){b.tokenize=f,b.state=n,b.tagName=b.tagStart=null;var d=b.tokenize(a,b);return d?d+" tag error":"tag error"}return/[\'\"]/.test(c)?(b.tokenize=h(c),b.stringStartCol=a.column(),b.tokenize(a,b)):(a.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/),"word")}function h(a){var b=function(b,c){for(;!b.eol();)if(b.next()==a){c.tokenize=g;break}return"string"};return b.isInAttribute=!0,b}function i(a,b){return function(c,d){for(;!c.eol();){if(c.match(b)){d.tokenize=f;break}c.next()}return a}}function j(a){return function(b,c){for(var d;null!=(d=b.next());){if("<"==d)return c.tokenize=j(a+1),c.tokenize(b,c);if(">"==d){if(1==a){c.tokenize=f;break}return c.tokenize=j(a-1),c.tokenize(b,c)}}return"meta"}}function k(a,b,c){this.prev=a.context,this.tagName=b,this.indent=a.indented,this.startOfLine=c,(x.doNotIndent.hasOwnProperty(b)||a.context&&a.context.noIndent)&&(this.noIndent=!0)}function l(a){a.context&&(a.context=a.context.prev)}function m(a,b){for(var c;;){if(!a.context)return;if(c=a.context.tagName,!x.contextGrabbers.hasOwnProperty(c)||!x.contextGrabbers[c].hasOwnProperty(b))return;l(a)}}function n(a,b,c){return"openTag"==a?(c.tagStart=b.column(),o):"closeTag"==a?p:n}function o(a,b,c){return"word"==a?(c.tagName=b.current(),B="tag",s):(B="error",o)}function p(a,b,c){if("word"==a){var d=b.current();return c.context&&c.context.tagName!=d&&x.implicitlyClosed.hasOwnProperty(c.context.tagName)&&l(c),c.context&&c.context.tagName==d||x.matchClosing===!1?(B="tag",q):(B="tag error",r)}return B="error",r}function q(a,b,c){return"endTag"!=a?(B="error",q):(l(c),n)}function r(a,b,c){return B="error",q(a,b,c)}function s(a,b,c){if("word"==a)return B="attribute",t;if("endTag"==a||"selfcloseTag"==a){var d=c.tagName,e=c.tagStart;return c.tagName=c.tagStart=null,"selfcloseTag"==a||x.autoSelfClosers.hasOwnProperty(d)?m(c,d):(m(c,d),c.context=new k(c,d,e==c.indented)),n}return B="error",s}function t(a,b,c){return"equals"==a?u:(x.allowMissing||(B="error"),s(a,b,c))}function u(a,b,c){return"string"==a?v:"word"==a&&x.allowUnquoted?(B="string",s):(B="error",s(a,b,c))}function v(a,b,c){return"string"==a?v:s(a,b,c)}var w=d.indentUnit,x={},y=e.htmlMode?b:c;for(var z in y)x[z]=y[z];for(var z in e)x[z]=e[z];var A,B;return f.isInText=!0,{startState:function(a){var b={tokenize:f,state:n,indented:a||0,tagName:null,tagStart:null,context:null};return null!=a&&(b.baseIndent=a),b},token:function(a,b){if(!b.tagName&&a.sol()&&(b.indented=a.indentation()),a.eatSpace())return null;A=null;var c=b.tokenize(a,b);return(c||A)&&"comment"!=c&&(B=null,b.state=b.state(A||c,a,b),B&&(c="error"==B?c+" error":B)),c},indent:function(b,c,d){var e=b.context;if(b.tokenize.isInAttribute)return b.tagStart==b.indented?b.stringStartCol+1:b.indented+w;if(e&&e.noIndent)return a.Pass;if(b.tokenize!=g&&b.tokenize!=f)return d?d.match(/^(\s*)/)[0].length:0;if(b.tagName)return x.multilineTagIndentPastTag!==!1?b.tagStart+b.tagName.length+2:b.tagStart+w*(x.multilineTagIndentFactor||1);if(x.alignCDATA&&/$/,blockCommentStart:"",configuration:x.htmlMode?"html":"xml",helperType:x.htmlMode?"html":"xml",skipAttribute:function(a){a.state==u&&(a.state=s)}}}),a.defineMIME("text/xml","xml"),a.defineMIME("application/xml","xml"),a.mimeModes.hasOwnProperty("text/html")||a.defineMIME("text/html",{name:"xml",htmlMode:!0})})},{"../../lib/codemirror":59}],76:[function(a,b,c){!function(d){"object"==typeof c&&"object"==typeof b?d(a("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],d):d(CodeMirror)}(function(a){"use strict";a.defineMode("yaml",function(){var a=["true","false","on","off","yes","no"],b=new RegExp("\\b(("+a.join(")|(")+"))$","i");return{token:function(a,c){var d=a.peek(),e=c.escaped;if(c.escaped=!1,"#"==d&&(0==a.pos||/\s/.test(a.string.charAt(a.pos-1))))return a.skipToEnd(),"comment";if(a.match(/^('([^']|\\.)*'?|"([^"]|\\.)*"?)/))return"string";if(c.literal&&a.indentation()>c.keyCol)return a.skipToEnd(),"string";if(c.literal&&(c.literal=!1),a.sol()){if(c.keyCol=0,c.pair=!1,c.pairStart=!1,a.match(/---/))return"def";if(a.match(/\.\.\./))return"def";if(a.match(/\s*-\s+/))return"meta"}if(a.match(/^(\{|\}|\[|\])/))return"{"==d?c.inlinePairs++:"}"==d?c.inlinePairs--:"["==d?c.inlineList++:c.inlineList--,"meta";if(c.inlineList>0&&!e&&","==d)return a.next(),"meta";if(c.inlinePairs>0&&!e&&","==d)return c.keyCol=0,c.pair=!1,c.pairStart=!1,a.next(),"meta";if(c.pairStart){if(a.match(/^\s*(\||\>)\s*/))return c.literal=!0,"meta";if(a.match(/^\s*(\&|\*)[a-z0-9\._-]+\b/i))return"variable-2";if(0==c.inlinePairs&&a.match(/^\s*-?[0-9\.\,]+\s?$/))return"number";if(c.inlinePairs>0&&a.match(/^\s*-?[0-9\.\,]+\s?(?=(,|}))/))return"number";if(a.match(b))return"keyword"}return!c.pair&&a.match(/^\s*(?:[,\[\]{}&*!|>'"%@`][^\s'":]|[^,\[\]{}#&*!|>'"%@`])[^#]*?(?=\s*:($|\s))/)?(c.pair=!0,c.keyCol=a.indentation(),"atom"):c.pair&&a.match(/^:\s*/)?(c.pairStart=!0,"meta"):(c.pairStart=!1,c.escaped="\\"==d,a.next(),null)},startState:function(){return{pair:!1,pairStart:!1,keyCol:0,inlinePairs:0,inlineList:0,literal:!1,escaped:!1}}}}),a.defineMIME("text/x-yaml","yaml"),a.defineMIME("text/yaml","yaml")})},{"../../lib/codemirror":59}],77:[function(a,b,c){var d=a("../../../node_modules/codemirror/lib/codemirror");a("../../../node_modules/codemirror/lib/codemirror.js"),a("../../../node_modules/codemirror/keymap/emacs.js"),a("../../../node_modules/codemirror/keymap/sublime.js"),a("../../../node_modules/codemirror/keymap/vim.js"),a("../../../node_modules/codemirror/addon/hint/show-hint.js"),a("../../../node_modules/codemirror/addon/hint/anyword-hint.js"),a("../../../node_modules/codemirror/addon/hint/css-hint.js"),a("../../../node_modules/codemirror/addon/hint/html-hint.js"),a("../../../node_modules/codemirror/addon/hint/javascript-hint.js"),a("../../../node_modules/codemirror/addon/hint/sql-hint.js"),a("../../../node_modules/codemirror/addon/hint/xml-hint.js"),a("../../../node_modules/codemirror/addon/lint/lint.js"),a("../../../node_modules/codemirror/addon/lint/css-lint.js"),a("../../../node_modules/codemirror/addon/lint/html-lint.js"),a("../../../node_modules/codemirror/addon/lint/javascript-lint.js"),a("../../../node_modules/codemirror/addon/lint/json-lint.js"),a("../../../node_modules/codemirror/addon/comment/comment.js"),a("../../../node_modules/codemirror/addon/comment/continuecomment.js"),a("../../../node_modules/codemirror/addon/fold/xml-fold.js"),a("../../../node_modules/codemirror/addon/mode/overlay.js"),a("../../../node_modules/codemirror/addon/edit/closebrackets.js"),a("../../../node_modules/codemirror/addon/edit/closetag.js"),a("../../../node_modules/codemirror/addon/edit/continuelist.js"),a("../../../node_modules/codemirror/addon/edit/matchbrackets.js"),a("../../../node_modules/codemirror/addon/edit/matchtags.js"),a("../../../node_modules/codemirror/addon/edit/trailingspace.js"),a("../../../node_modules/codemirror/addon/dialog/dialog.js"),a("../../../node_modules/codemirror/addon/display/autorefresh.js"),a("../../../node_modules/codemirror/addon/display/fullscreen.js"),a("../../../node_modules/codemirror/addon/display/panel.js"),a("../../../node_modules/codemirror/addon/display/placeholder.js"),a("../../../node_modules/codemirror/addon/display/rulers.js"),a("../../../node_modules/codemirror/addon/fold/brace-fold.js"),a("../../../node_modules/codemirror/addon/fold/comment-fold.js"),a("../../../node_modules/codemirror/addon/fold/foldcode.js"),a("../../../node_modules/codemirror/addon/fold/foldgutter.js"),a("../../../node_modules/codemirror/addon/fold/indent-fold.js"),a("../../../node_modules/codemirror/addon/fold/markdown-fold.js"),a("../../../node_modules/codemirror/addon/merge/merge.js"),a("../../../node_modules/codemirror/addon/mode/loadmode.js"),a("../../../node_modules/codemirror/addon/mode/multiplex.js"),a("../../../node_modules/codemirror/addon/mode/simple.js"),a("../../../node_modules/codemirror/addon/runmode/runmode.js"),a("../../../node_modules/codemirror/addon/runmode/colorize.js"),a("../../../node_modules/codemirror/addon/runmode/runmode-standalone.js"),a("../../../node_modules/codemirror/addon/scroll/annotatescrollbar.js"),a("../../../node_modules/codemirror/addon/scroll/scrollpastend.js"),a("../../../node_modules/codemirror/addon/scroll/simplescrollbars.js"),a("../../../node_modules/codemirror/addon/search/search.js"),a("../../../node_modules/codemirror/addon/search/jump-to-line.js"),a("../../../node_modules/codemirror/addon/search/match-highlighter.js"),a("../../../node_modules/codemirror/addon/search/matchesonscrollbar.js"),a("../../../node_modules/codemirror/addon/search/searchcursor.js"),a("../../../node_modules/codemirror/addon/tern/tern.js"),a("../../../node_modules/codemirror/addon/tern/worker.js"),a("../../../node_modules/codemirror/addon/wrap/hardwrap.js"),a("../../../node_modules/codemirror/addon/selection/active-line.js"),a("../../../node_modules/codemirror/addon/selection/mark-selection.js"),a("../../../node_modules/codemirror/addon/selection/selection-pointer.js"),a("../../../node_modules/codemirror/mode/meta.js"),a("../../../node_modules/codemirror/mode/clike/clike.js"),a("../../../node_modules/codemirror/mode/css/css.js"),a("../../../node_modules/codemirror/mode/diff/diff.js"),a("../../../node_modules/codemirror/mode/htmlmixed/htmlmixed.js"),a("../../../node_modules/codemirror/mode/http/http.js"),a("../../../node_modules/codemirror/mode/javascript/javascript.js"),a("../../../node_modules/codemirror/mode/jsx/jsx.js"),a("../../../node_modules/codemirror/mode/markdown/markdown.js"),a("../../../node_modules/codemirror/mode/gfm/gfm.js"),a("../../../node_modules/codemirror/mode/nginx/nginx.js"),a("../../../node_modules/codemirror/mode/php/php.js"),a("../../../node_modules/codemirror/mode/sass/sass.js"),a("../../../node_modules/codemirror/mode/shell/shell.js"),a("../../../node_modules/codemirror/mode/sql/sql.js"),a("../../../node_modules/codemirror/mode/xml/xml.js"),a("../../../node_modules/codemirror/mode/yaml/yaml.js"),window.wp||(window.wp={}),window.wp.CodeMirror=d},{"../../../node_modules/codemirror/addon/comment/comment.js":1,"../../../node_modules/codemirror/addon/comment/continuecomment.js":2,"../../../node_modules/codemirror/addon/dialog/dialog.js":3,"../../../node_modules/codemirror/addon/display/autorefresh.js":4,"../../../node_modules/codemirror/addon/display/fullscreen.js":5,"../../../node_modules/codemirror/addon/display/panel.js":6,"../../../node_modules/codemirror/addon/display/placeholder.js":7,"../../../node_modules/codemirror/addon/display/rulers.js":8,"../../../node_modules/codemirror/addon/edit/closebrackets.js":9,"../../../node_modules/codemirror/addon/edit/closetag.js":10,"../../../node_modules/codemirror/addon/edit/continuelist.js":11,"../../../node_modules/codemirror/addon/edit/matchbrackets.js":12,"../../../node_modules/codemirror/addon/edit/matchtags.js":13,"../../../node_modules/codemirror/addon/edit/trailingspace.js":14,"../../../node_modules/codemirror/addon/fold/brace-fold.js":15,"../../../node_modules/codemirror/addon/fold/comment-fold.js":16,"../../../node_modules/codemirror/addon/fold/foldcode.js":17,"../../../node_modules/codemirror/addon/fold/foldgutter.js":18,"../../../node_modules/codemirror/addon/fold/indent-fold.js":19,"../../../node_modules/codemirror/addon/fold/markdown-fold.js":20,"../../../node_modules/codemirror/addon/fold/xml-fold.js":21,"../../../node_modules/codemirror/addon/hint/anyword-hint.js":22,"../../../node_modules/codemirror/addon/hint/css-hint.js":23,"../../../node_modules/codemirror/addon/hint/html-hint.js":24,"../../../node_modules/codemirror/addon/hint/javascript-hint.js":25,"../../../node_modules/codemirror/addon/hint/show-hint.js":26,"../../../node_modules/codemirror/addon/hint/sql-hint.js":27,"../../../node_modules/codemirror/addon/hint/xml-hint.js":28,"../../../node_modules/codemirror/addon/lint/css-lint.js":29,"../../../node_modules/codemirror/addon/lint/html-lint.js":30,"../../../node_modules/codemirror/addon/lint/javascript-lint.js":31,"../../../node_modules/codemirror/addon/lint/json-lint.js":32,"../../../node_modules/codemirror/addon/lint/lint.js":33,"../../../node_modules/codemirror/addon/merge/merge.js":34,"../../../node_modules/codemirror/addon/mode/loadmode.js":35,"../../../node_modules/codemirror/addon/mode/multiplex.js":36,"../../../node_modules/codemirror/addon/mode/overlay.js":37,"../../../node_modules/codemirror/addon/mode/simple.js":38,"../../../node_modules/codemirror/addon/runmode/colorize.js":39,"../../../node_modules/codemirror/addon/runmode/runmode-standalone.js":40,"../../../node_modules/codemirror/addon/runmode/runmode.js":41,"../../../node_modules/codemirror/addon/scroll/annotatescrollbar.js":42,"../../../node_modules/codemirror/addon/scroll/scrollpastend.js":43,"../../../node_modules/codemirror/addon/scroll/simplescrollbars.js":44,"../../../node_modules/codemirror/addon/search/jump-to-line.js":45,"../../../node_modules/codemirror/addon/search/match-highlighter.js":46,"../../../node_modules/codemirror/addon/search/matchesonscrollbar.js":47,"../../../node_modules/codemirror/addon/search/search.js":48,"../../../node_modules/codemirror/addon/search/searchcursor.js":49,"../../../node_modules/codemirror/addon/selection/active-line.js":50,"../../../node_modules/codemirror/addon/selection/mark-selection.js":51,"../../../node_modules/codemirror/addon/selection/selection-pointer.js":52,"../../../node_modules/codemirror/addon/tern/tern.js":53,"../../../node_modules/codemirror/addon/tern/worker.js":54,"../../../node_modules/codemirror/addon/wrap/hardwrap.js":55,"../../../node_modules/codemirror/keymap/emacs.js":56,"../../../node_modules/codemirror/keymap/sublime.js":57,"../../../node_modules/codemirror/keymap/vim.js":58,"../../../node_modules/codemirror/lib/codemirror":59,"../../../node_modules/codemirror/lib/codemirror.js":59,"../../../node_modules/codemirror/mode/clike/clike.js":60,"../../../node_modules/codemirror/mode/css/css.js":61,"../../../node_modules/codemirror/mode/diff/diff.js":62,"../../../node_modules/codemirror/mode/gfm/gfm.js":63,"../../../node_modules/codemirror/mode/htmlmixed/htmlmixed.js":64,"../../../node_modules/codemirror/mode/http/http.js":65,"../../../node_modules/codemirror/mode/javascript/javascript.js":66,"../../../node_modules/codemirror/mode/jsx/jsx.js":67,"../../../node_modules/codemirror/mode/markdown/markdown.js":68,"../../../node_modules/codemirror/mode/meta.js":69,"../../../node_modules/codemirror/mode/nginx/nginx.js":70,"../../../node_modules/codemirror/mode/php/php.js":71,"../../../node_modules/codemirror/mode/sass/sass.js":72,"../../../node_modules/codemirror/mode/shell/shell.js":73,"../../../node_modules/codemirror/mode/sql/sql.js":74,"../../../node_modules/codemirror/mode/xml/xml.js":75,"../../../node_modules/codemirror/mode/yaml/yaml.js":76}]},{},[77]); \ No newline at end of file diff --git a/wp-includes/js/codemirror/csslint.js b/wp-includes/js/codemirror/csslint.js new file mode 100644 index 0000000..665e4a2 --- /dev/null +++ b/wp-includes/js/codemirror/csslint.js @@ -0,0 +1,10859 @@ +/*! +CSSLint v1.0.4 +Copyright (c) 2016 Nicole Sullivan and Nicholas C. Zakas. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the 'Software'), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +*/ + +var CSSLint = (function(){ + var module = module || {}, + exports = exports || {}; + +/*! +Parser-Lib +Copyright (c) 2009-2016 Nicholas C. Zakas. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ +/* Version v1.1.0, Build time: 6-December-2016 10:31:29 */ +var parserlib = (function () { +var require; +require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o). + * @namespace parserlib.css + * @class Combinator + * @extends parserlib.util.SyntaxUnit + * @constructor + * @param {String} text The text representation of the unit. + * @param {int} line The line of text on which the unit resides. + * @param {int} col The column of text on which the unit resides. + */ +function Combinator(text, line, col) { + + SyntaxUnit.call(this, text, line, col, Parser.COMBINATOR_TYPE); + + /** + * The type of modifier. + * @type String + * @property type + */ + this.type = "unknown"; + + //pretty simple + if (/^\s+$/.test(text)) { + this.type = "descendant"; + } else if (text === ">") { + this.type = "child"; + } else if (text === "+") { + this.type = "adjacent-sibling"; + } else if (text === "~") { + this.type = "sibling"; + } + +} + +Combinator.prototype = new SyntaxUnit(); +Combinator.prototype.constructor = Combinator; + + +},{"../util/SyntaxUnit":26,"./Parser":6}],3:[function(require,module,exports){ +"use strict"; + +module.exports = Matcher; + +var StringReader = require("../util/StringReader"); +var SyntaxError = require("../util/SyntaxError"); + +/** + * This class implements a combinator library for matcher functions. + * The combinators are described at: + * https://developer.mozilla.org/en-US/docs/Web/CSS/Value_definition_syntax#Component_value_combinators + */ +function Matcher(matchFunc, toString) { + this.match = function(expression) { + // Save/restore marks to ensure that failed matches always restore + // the original location in the expression. + var result; + expression.mark(); + result = matchFunc(expression); + if (result) { + expression.drop(); + } else { + expression.restore(); + } + return result; + }; + this.toString = typeof toString === "function" ? toString : function() { + return toString; + }; +} + +/** Precedence table of combinators. */ +Matcher.prec = { + MOD: 5, + SEQ: 4, + ANDAND: 3, + OROR: 2, + ALT: 1 +}; + +/** Simple recursive-descent grammar to build matchers from strings. */ +Matcher.parse = function(str) { + var reader, eat, expr, oror, andand, seq, mod, term, result; + reader = new StringReader(str); + eat = function(matcher) { + var result = reader.readMatch(matcher); + if (result === null) { + throw new SyntaxError( + "Expected "+matcher, reader.getLine(), reader.getCol()); + } + return result; + }; + expr = function() { + // expr = oror (" | " oror)* + var m = [ oror() ]; + while (reader.readMatch(" | ") !== null) { + m.push(oror()); + } + return m.length === 1 ? m[0] : Matcher.alt.apply(Matcher, m); + }; + oror = function() { + // oror = andand ( " || " andand)* + var m = [ andand() ]; + while (reader.readMatch(" || ") !== null) { + m.push(andand()); + } + return m.length === 1 ? m[0] : Matcher.oror.apply(Matcher, m); + }; + andand = function() { + // andand = seq ( " && " seq)* + var m = [ seq() ]; + while (reader.readMatch(" && ") !== null) { + m.push(seq()); + } + return m.length === 1 ? m[0] : Matcher.andand.apply(Matcher, m); + }; + seq = function() { + // seq = mod ( " " mod)* + var m = [ mod() ]; + while (reader.readMatch(/^ (?![&|\]])/) !== null) { + m.push(mod()); + } + return m.length === 1 ? m[0] : Matcher.seq.apply(Matcher, m); + }; + mod = function() { + // mod = term ( "?" | "*" | "+" | "#" | "{,}" )? + var m = term(); + if (reader.readMatch("?") !== null) { + return m.question(); + } else if (reader.readMatch("*") !== null) { + return m.star(); + } else if (reader.readMatch("+") !== null) { + return m.plus(); + } else if (reader.readMatch("#") !== null) { + return m.hash(); + } else if (reader.readMatch(/^\{\s*/) !== null) { + var min = eat(/^\d+/); + eat(/^\s*,\s*/); + var max = eat(/^\d+/); + eat(/^\s*\}/); + return m.braces(+min, +max); + } + return m; + }; + term = function() { + // term = | literal | "[ " expression " ]" + if (reader.readMatch("[ ") !== null) { + var m = expr(); + eat(" ]"); + return m; + } + return Matcher.fromType(eat(/^[^ ?*+#{]+/)); + }; + result = expr(); + if (!reader.eof()) { + throw new SyntaxError( + "Expected end of string", reader.getLine(), reader.getCol()); + } + return result; +}; + +/** + * Convert a string to a matcher (parsing simple alternations), + * or do nothing if the argument is already a matcher. + */ +Matcher.cast = function(m) { + if (m instanceof Matcher) { + return m; + } + return Matcher.parse(m); +}; + +/** + * Create a matcher for a single type. + */ +Matcher.fromType = function(type) { + // Late require of ValidationTypes to break a dependency cycle. + var ValidationTypes = require("./ValidationTypes"); + return new Matcher(function(expression) { + return expression.hasNext() && ValidationTypes.isType(expression, type); + }, type); +}; + +/** + * Create a matcher for one or more juxtaposed words, which all must + * occur, in the given order. + */ +Matcher.seq = function() { + var ms = Array.prototype.slice.call(arguments).map(Matcher.cast); + if (ms.length === 1) { + return ms[0]; + } + return new Matcher(function(expression) { + var i, result = true; + for (i = 0; result && i < ms.length; i++) { + result = ms[i].match(expression); + } + return result; + }, function(prec) { + var p = Matcher.prec.SEQ; + var s = ms.map(function(m) { + return m.toString(p); + }).join(" "); + if (prec > p) { + s = "[ " + s + " ]"; + } + return s; + }); +}; + +/** + * Create a matcher for one or more alternatives, where exactly one + * must occur. + */ +Matcher.alt = function() { + var ms = Array.prototype.slice.call(arguments).map(Matcher.cast); + if (ms.length === 1) { + return ms[0]; + } + return new Matcher(function(expression) { + var i, result = false; + for (i = 0; !result && i < ms.length; i++) { + result = ms[i].match(expression); + } + return result; + }, function(prec) { + var p = Matcher.prec.ALT; + var s = ms.map(function(m) { + return m.toString(p); + }).join(" | "); + if (prec > p) { + s = "[ " + s + " ]"; + } + return s; + }); +}; + +/** + * Create a matcher for two or more options. This implements the + * double bar (||) and double ampersand (&&) operators, as well as + * variants of && where some of the alternatives are optional. + * This will backtrack through even successful matches to try to + * maximize the number of items matched. + */ +Matcher.many = function(required) { + var ms = Array.prototype.slice.call(arguments, 1).reduce(function(acc, v) { + if (v.expand) { + // Insert all of the options for the given complex rule as + // individual options. + var ValidationTypes = require("./ValidationTypes"); + acc.push.apply(acc, ValidationTypes.complex[v.expand].options); + } else { + acc.push(Matcher.cast(v)); + } + return acc; + }, []); + + if (required === true) { + required = ms.map(function() { + return true; + }); + } + + var result = new Matcher(function(expression) { + var seen = [], max = 0, pass = 0; + var success = function(matchCount) { + if (pass === 0) { + max = Math.max(matchCount, max); + return matchCount === ms.length; + } else { + return matchCount === max; + } + }; + var tryMatch = function(matchCount) { + for (var i = 0; i < ms.length; i++) { + if (seen[i]) { + continue; + } + expression.mark(); + if (ms[i].match(expression)) { + seen[i] = true; + // Increase matchCount iff this was a required element + // (or if all the elements are optional) + if (tryMatch(matchCount + ((required === false || required[i]) ? 1 : 0))) { + expression.drop(); + return true; + } + // Backtrack: try *not* matching using this rule, and + // let's see if it leads to a better overall match. + expression.restore(); + seen[i] = false; + } else { + expression.drop(); + } + } + return success(matchCount); + }; + if (!tryMatch(0)) { + // Couldn't get a complete match, retrace our steps to make the + // match with the maximum # of required elements. + pass++; + tryMatch(0); + } + + if (required === false) { + return max > 0; + } + // Use finer-grained specification of which matchers are required. + for (var i = 0; i < ms.length; i++) { + if (required[i] && !seen[i]) { + return false; + } + } + return true; + }, function(prec) { + var p = required === false ? Matcher.prec.OROR : Matcher.prec.ANDAND; + var s = ms.map(function(m, i) { + if (required !== false && !required[i]) { + return m.toString(Matcher.prec.MOD) + "?"; + } + return m.toString(p); + }).join(required === false ? " || " : " && "); + if (prec > p) { + s = "[ " + s + " ]"; + } + return s; + }); + result.options = ms; + return result; +}; + +/** + * Create a matcher for two or more options, where all options are + * mandatory but they may appear in any order. + */ +Matcher.andand = function() { + var args = Array.prototype.slice.call(arguments); + args.unshift(true); + return Matcher.many.apply(Matcher, args); +}; + +/** + * Create a matcher for two or more options, where options are + * optional and may appear in any order, but at least one must be + * present. + */ +Matcher.oror = function() { + var args = Array.prototype.slice.call(arguments); + args.unshift(false); + return Matcher.many.apply(Matcher, args); +}; + +/** Instance methods on Matchers. */ +Matcher.prototype = { + constructor: Matcher, + // These are expected to be overridden in every instance. + match: function() { throw new Error("unimplemented"); }, + toString: function() { throw new Error("unimplemented"); }, + // This returns a standalone function to do the matching. + func: function() { return this.match.bind(this); }, + // Basic combinators + then: function(m) { return Matcher.seq(this, m); }, + or: function(m) { return Matcher.alt(this, m); }, + andand: function(m) { return Matcher.many(true, this, m); }, + oror: function(m) { return Matcher.many(false, this, m); }, + // Component value multipliers + star: function() { return this.braces(0, Infinity, "*"); }, + plus: function() { return this.braces(1, Infinity, "+"); }, + question: function() { return this.braces(0, 1, "?"); }, + hash: function() { + return this.braces(1, Infinity, "#", Matcher.cast(",")); + }, + braces: function(min, max, marker, optSep) { + var m1 = this, m2 = optSep ? optSep.then(this) : this; + if (!marker) { + marker = "{" + min + "," + max + "}"; + } + return new Matcher(function(expression) { + var result = true, i; + for (i = 0; i < max; i++) { + if (i > 0 && optSep) { + result = m2.match(expression); + } else { + result = m1.match(expression); + } + if (!result) { + break; + } + } + return i >= min; + }, function() { + return m1.toString(Matcher.prec.MOD) + marker; + }); + } +}; + +},{"../util/StringReader":24,"../util/SyntaxError":25,"./ValidationTypes":21}],4:[function(require,module,exports){ +"use strict"; + +module.exports = MediaFeature; + +var SyntaxUnit = require("../util/SyntaxUnit"); + +var Parser = require("./Parser"); + +/** + * Represents a media feature, such as max-width:500. + * @namespace parserlib.css + * @class MediaFeature + * @extends parserlib.util.SyntaxUnit + * @constructor + * @param {SyntaxUnit} name The name of the feature. + * @param {SyntaxUnit} value The value of the feature or null if none. + */ +function MediaFeature(name, value) { + + SyntaxUnit.call(this, "(" + name + (value !== null ? ":" + value : "") + ")", name.startLine, name.startCol, Parser.MEDIA_FEATURE_TYPE); + + /** + * The name of the media feature + * @type String + * @property name + */ + this.name = name; + + /** + * The value for the feature or null if there is none. + * @type SyntaxUnit + * @property value + */ + this.value = value; +} + +MediaFeature.prototype = new SyntaxUnit(); +MediaFeature.prototype.constructor = MediaFeature; + + +},{"../util/SyntaxUnit":26,"./Parser":6}],5:[function(require,module,exports){ +"use strict"; + +module.exports = MediaQuery; + +var SyntaxUnit = require("../util/SyntaxUnit"); + +var Parser = require("./Parser"); + +/** + * Represents an individual media query. + * @namespace parserlib.css + * @class MediaQuery + * @extends parserlib.util.SyntaxUnit + * @constructor + * @param {String} modifier The modifier "not" or "only" (or null). + * @param {String} mediaType The type of media (i.e., "print"). + * @param {Array} parts Array of selectors parts making up this selector. + * @param {int} line The line of text on which the unit resides. + * @param {int} col The column of text on which the unit resides. + */ +function MediaQuery(modifier, mediaType, features, line, col) { + + SyntaxUnit.call(this, (modifier ? modifier + " ": "") + (mediaType ? mediaType : "") + (mediaType && features.length > 0 ? " and " : "") + features.join(" and "), line, col, Parser.MEDIA_QUERY_TYPE); + + /** + * The media modifier ("not" or "only") + * @type String + * @property modifier + */ + this.modifier = modifier; + + /** + * The mediaType (i.e., "print") + * @type String + * @property mediaType + */ + this.mediaType = mediaType; + + /** + * The parts that make up the selector. + * @type Array + * @property features + */ + this.features = features; + +} + +MediaQuery.prototype = new SyntaxUnit(); +MediaQuery.prototype.constructor = MediaQuery; + + +},{"../util/SyntaxUnit":26,"./Parser":6}],6:[function(require,module,exports){ +"use strict"; + +module.exports = Parser; + +var EventTarget = require("../util/EventTarget"); +var SyntaxError = require("../util/SyntaxError"); +var SyntaxUnit = require("../util/SyntaxUnit"); + +var Combinator = require("./Combinator"); +var MediaFeature = require("./MediaFeature"); +var MediaQuery = require("./MediaQuery"); +var PropertyName = require("./PropertyName"); +var PropertyValue = require("./PropertyValue"); +var PropertyValuePart = require("./PropertyValuePart"); +var Selector = require("./Selector"); +var SelectorPart = require("./SelectorPart"); +var SelectorSubPart = require("./SelectorSubPart"); +var TokenStream = require("./TokenStream"); +var Tokens = require("./Tokens"); +var Validation = require("./Validation"); + +/** + * A CSS3 parser. + * @namespace parserlib.css + * @class Parser + * @constructor + * @param {Object} options (Optional) Various options for the parser: + * starHack (true|false) to allow IE6 star hack as valid, + * underscoreHack (true|false) to interpret leading underscores + * as IE6-7 targeting for known properties, ieFilters (true|false) + * to indicate that IE < 8 filters should be accepted and not throw + * syntax errors. + */ +function Parser(options) { + + //inherit event functionality + EventTarget.call(this); + + + this.options = options || {}; + + this._tokenStream = null; +} + +//Static constants +Parser.DEFAULT_TYPE = 0; +Parser.COMBINATOR_TYPE = 1; +Parser.MEDIA_FEATURE_TYPE = 2; +Parser.MEDIA_QUERY_TYPE = 3; +Parser.PROPERTY_NAME_TYPE = 4; +Parser.PROPERTY_VALUE_TYPE = 5; +Parser.PROPERTY_VALUE_PART_TYPE = 6; +Parser.SELECTOR_TYPE = 7; +Parser.SELECTOR_PART_TYPE = 8; +Parser.SELECTOR_SUB_PART_TYPE = 9; + +Parser.prototype = function() { + + var proto = new EventTarget(), //new prototype + prop, + additions = { + __proto__: null, + + //restore constructor + constructor: Parser, + + //instance constants - yuck + DEFAULT_TYPE : 0, + COMBINATOR_TYPE : 1, + MEDIA_FEATURE_TYPE : 2, + MEDIA_QUERY_TYPE : 3, + PROPERTY_NAME_TYPE : 4, + PROPERTY_VALUE_TYPE : 5, + PROPERTY_VALUE_PART_TYPE : 6, + SELECTOR_TYPE : 7, + SELECTOR_PART_TYPE : 8, + SELECTOR_SUB_PART_TYPE : 9, + + //----------------------------------------------------------------- + // Grammar + //----------------------------------------------------------------- + + _stylesheet: function() { + + /* + * stylesheet + * : [ CHARSET_SYM S* STRING S* ';' ]? + * [S|CDO|CDC]* [ import [S|CDO|CDC]* ]* + * [ namespace [S|CDO|CDC]* ]* + * [ [ ruleset | media | page | font_face | keyframes_rule | supports_rule ] [S|CDO|CDC]* ]* + * ; + */ + + var tokenStream = this._tokenStream, + count, + token, + tt; + + this.fire("startstylesheet"); + + //try to read character set + this._charset(); + + this._skipCruft(); + + //try to read imports - may be more than one + while (tokenStream.peek() === Tokens.IMPORT_SYM) { + this._import(); + this._skipCruft(); + } + + //try to read namespaces - may be more than one + while (tokenStream.peek() === Tokens.NAMESPACE_SYM) { + this._namespace(); + this._skipCruft(); + } + + //get the next token + tt = tokenStream.peek(); + + //try to read the rest + while (tt > Tokens.EOF) { + + try { + + switch (tt) { + case Tokens.MEDIA_SYM: + this._media(); + this._skipCruft(); + break; + case Tokens.PAGE_SYM: + this._page(); + this._skipCruft(); + break; + case Tokens.FONT_FACE_SYM: + this._font_face(); + this._skipCruft(); + break; + case Tokens.KEYFRAMES_SYM: + this._keyframes(); + this._skipCruft(); + break; + case Tokens.VIEWPORT_SYM: + this._viewport(); + this._skipCruft(); + break; + case Tokens.DOCUMENT_SYM: + this._document(); + this._skipCruft(); + break; + case Tokens.SUPPORTS_SYM: + this._supports(); + this._skipCruft(); + break; + case Tokens.UNKNOWN_SYM: //unknown @ rule + tokenStream.get(); + if (!this.options.strict) { + + //fire error event + this.fire({ + type: "error", + error: null, + message: "Unknown @ rule: " + tokenStream.LT(0).value + ".", + line: tokenStream.LT(0).startLine, + col: tokenStream.LT(0).startCol + }); + + //skip braces + count=0; + while (tokenStream.advance([Tokens.LBRACE, Tokens.RBRACE]) === Tokens.LBRACE) { + count++; //keep track of nesting depth + } + + while (count) { + tokenStream.advance([Tokens.RBRACE]); + count--; + } + + } else { + //not a syntax error, rethrow it + throw new SyntaxError("Unknown @ rule.", tokenStream.LT(0).startLine, tokenStream.LT(0).startCol); + } + break; + case Tokens.S: + this._readWhitespace(); + break; + default: + if (!this._ruleset()) { + + //error handling for known issues + switch (tt) { + case Tokens.CHARSET_SYM: + token = tokenStream.LT(1); + this._charset(false); + throw new SyntaxError("@charset not allowed here.", token.startLine, token.startCol); + case Tokens.IMPORT_SYM: + token = tokenStream.LT(1); + this._import(false); + throw new SyntaxError("@import not allowed here.", token.startLine, token.startCol); + case Tokens.NAMESPACE_SYM: + token = tokenStream.LT(1); + this._namespace(false); + throw new SyntaxError("@namespace not allowed here.", token.startLine, token.startCol); + default: + tokenStream.get(); //get the last token + this._unexpectedToken(tokenStream.token()); + } + + } + } + } catch (ex) { + if (ex instanceof SyntaxError && !this.options.strict) { + this.fire({ + type: "error", + error: ex, + message: ex.message, + line: ex.line, + col: ex.col + }); + } else { + throw ex; + } + } + + tt = tokenStream.peek(); + } + + if (tt !== Tokens.EOF) { + this._unexpectedToken(tokenStream.token()); + } + + this.fire("endstylesheet"); + }, + + _charset: function(emit) { + var tokenStream = this._tokenStream, + charset, + token, + line, + col; + + if (tokenStream.match(Tokens.CHARSET_SYM)) { + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + + this._readWhitespace(); + tokenStream.mustMatch(Tokens.STRING); + + token = tokenStream.token(); + charset = token.value; + + this._readWhitespace(); + tokenStream.mustMatch(Tokens.SEMICOLON); + + if (emit !== false) { + this.fire({ + type: "charset", + charset:charset, + line: line, + col: col + }); + } + } + }, + + _import: function(emit) { + /* + * import + * : IMPORT_SYM S* + * [STRING|URI] S* media_query_list? ';' S* + */ + + var tokenStream = this._tokenStream, + uri, + importToken, + mediaList = []; + + //read import symbol + tokenStream.mustMatch(Tokens.IMPORT_SYM); + importToken = tokenStream.token(); + this._readWhitespace(); + + tokenStream.mustMatch([Tokens.STRING, Tokens.URI]); + + //grab the URI value + uri = tokenStream.token().value.replace(/^(?:url\()?["']?([^"']+?)["']?\)?$/, "$1"); + + this._readWhitespace(); + + mediaList = this._media_query_list(); + + //must end with a semicolon + tokenStream.mustMatch(Tokens.SEMICOLON); + this._readWhitespace(); + + if (emit !== false) { + this.fire({ + type: "import", + uri: uri, + media: mediaList, + line: importToken.startLine, + col: importToken.startCol + }); + } + + }, + + _namespace: function(emit) { + /* + * namespace + * : NAMESPACE_SYM S* [namespace_prefix S*]? [STRING|URI] S* ';' S* + */ + + var tokenStream = this._tokenStream, + line, + col, + prefix, + uri; + + //read import symbol + tokenStream.mustMatch(Tokens.NAMESPACE_SYM); + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + this._readWhitespace(); + + //it's a namespace prefix - no _namespace_prefix() method because it's just an IDENT + if (tokenStream.match(Tokens.IDENT)) { + prefix = tokenStream.token().value; + this._readWhitespace(); + } + + tokenStream.mustMatch([Tokens.STRING, Tokens.URI]); + /*if (!tokenStream.match(Tokens.STRING)){ + tokenStream.mustMatch(Tokens.URI); + }*/ + + //grab the URI value + uri = tokenStream.token().value.replace(/(?:url\()?["']([^"']+)["']\)?/, "$1"); + + this._readWhitespace(); + + //must end with a semicolon + tokenStream.mustMatch(Tokens.SEMICOLON); + this._readWhitespace(); + + if (emit !== false) { + this.fire({ + type: "namespace", + prefix: prefix, + uri: uri, + line: line, + col: col + }); + } + + }, + + _supports: function(emit) { + /* + * supports_rule + * : SUPPORTS_SYM S* supports_condition S* group_rule_body + * ; + */ + var tokenStream = this._tokenStream, + line, + col; + + if (tokenStream.match(Tokens.SUPPORTS_SYM)) { + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + + this._readWhitespace(); + this._supports_condition(); + this._readWhitespace(); + + tokenStream.mustMatch(Tokens.LBRACE); + this._readWhitespace(); + + if (emit !== false) { + this.fire({ + type: "startsupports", + line: line, + col: col + }); + } + + while (true) { + if (!this._ruleset()) { + break; + } + } + + tokenStream.mustMatch(Tokens.RBRACE); + this._readWhitespace(); + + this.fire({ + type: "endsupports", + line: line, + col: col + }); + } + }, + + _supports_condition: function() { + /* + * supports_condition + * : supports_negation | supports_conjunction | supports_disjunction | + * supports_condition_in_parens + * ; + */ + var tokenStream = this._tokenStream, + ident; + + if (tokenStream.match(Tokens.IDENT)) { + ident = tokenStream.token().value.toLowerCase(); + + if (ident === "not") { + tokenStream.mustMatch(Tokens.S); + this._supports_condition_in_parens(); + } else { + tokenStream.unget(); + } + } else { + this._supports_condition_in_parens(); + this._readWhitespace(); + + while (tokenStream.peek() === Tokens.IDENT) { + ident = tokenStream.LT(1).value.toLowerCase(); + if (ident === "and" || ident === "or") { + tokenStream.mustMatch(Tokens.IDENT); + this._readWhitespace(); + this._supports_condition_in_parens(); + this._readWhitespace(); + } + } + } + }, + + _supports_condition_in_parens: function() { + /* + * supports_condition_in_parens + * : ( '(' S* supports_condition S* ')' ) | supports_declaration_condition | + * general_enclosed + * ; + */ + var tokenStream = this._tokenStream, + ident; + + if (tokenStream.match(Tokens.LPAREN)) { + this._readWhitespace(); + if (tokenStream.match(Tokens.IDENT)) { + // look ahead for not keyword, if not given, continue with declaration condition. + ident = tokenStream.token().value.toLowerCase(); + if (ident === "not") { + this._readWhitespace(); + this._supports_condition(); + this._readWhitespace(); + tokenStream.mustMatch(Tokens.RPAREN); + } else { + tokenStream.unget(); + this._supports_declaration_condition(false); + } + } else { + this._supports_condition(); + this._readWhitespace(); + tokenStream.mustMatch(Tokens.RPAREN); + } + } else { + this._supports_declaration_condition(); + } + }, + + _supports_declaration_condition: function(requireStartParen) { + /* + * supports_declaration_condition + * : '(' S* declaration ')' + * ; + */ + var tokenStream = this._tokenStream; + + if (requireStartParen !== false) { + tokenStream.mustMatch(Tokens.LPAREN); + } + this._readWhitespace(); + this._declaration(); + tokenStream.mustMatch(Tokens.RPAREN); + }, + + _media: function() { + /* + * media + * : MEDIA_SYM S* media_query_list S* '{' S* ruleset* '}' S* + * ; + */ + var tokenStream = this._tokenStream, + line, + col, + mediaList;// = []; + + //look for @media + tokenStream.mustMatch(Tokens.MEDIA_SYM); + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + + this._readWhitespace(); + + mediaList = this._media_query_list(); + + tokenStream.mustMatch(Tokens.LBRACE); + this._readWhitespace(); + + this.fire({ + type: "startmedia", + media: mediaList, + line: line, + col: col + }); + + while (true) { + if (tokenStream.peek() === Tokens.PAGE_SYM) { + this._page(); + } else if (tokenStream.peek() === Tokens.FONT_FACE_SYM) { + this._font_face(); + } else if (tokenStream.peek() === Tokens.VIEWPORT_SYM) { + this._viewport(); + } else if (tokenStream.peek() === Tokens.DOCUMENT_SYM) { + this._document(); + } else if (tokenStream.peek() === Tokens.SUPPORTS_SYM) { + this._supports(); + } else if (tokenStream.peek() === Tokens.MEDIA_SYM) { + this._media(); + } else if (!this._ruleset()) { + break; + } + } + + tokenStream.mustMatch(Tokens.RBRACE); + this._readWhitespace(); + + this.fire({ + type: "endmedia", + media: mediaList, + line: line, + col: col + }); + }, + + + //CSS3 Media Queries + _media_query_list: function() { + /* + * media_query_list + * : S* [media_query [ ',' S* media_query ]* ]? + * ; + */ + var tokenStream = this._tokenStream, + mediaList = []; + + + this._readWhitespace(); + + if (tokenStream.peek() === Tokens.IDENT || tokenStream.peek() === Tokens.LPAREN) { + mediaList.push(this._media_query()); + } + + while (tokenStream.match(Tokens.COMMA)) { + this._readWhitespace(); + mediaList.push(this._media_query()); + } + + return mediaList; + }, + + /* + * Note: "expression" in the grammar maps to the _media_expression + * method. + + */ + _media_query: function() { + /* + * media_query + * : [ONLY | NOT]? S* media_type S* [ AND S* expression ]* + * | expression [ AND S* expression ]* + * ; + */ + var tokenStream = this._tokenStream, + type = null, + ident = null, + token = null, + expressions = []; + + if (tokenStream.match(Tokens.IDENT)) { + ident = tokenStream.token().value.toLowerCase(); + + //since there's no custom tokens for these, need to manually check + if (ident !== "only" && ident !== "not") { + tokenStream.unget(); + ident = null; + } else { + token = tokenStream.token(); + } + } + + this._readWhitespace(); + + if (tokenStream.peek() === Tokens.IDENT) { + type = this._media_type(); + if (token === null) { + token = tokenStream.token(); + } + } else if (tokenStream.peek() === Tokens.LPAREN) { + if (token === null) { + token = tokenStream.LT(1); + } + expressions.push(this._media_expression()); + } + + if (type === null && expressions.length === 0) { + return null; + } else { + this._readWhitespace(); + while (tokenStream.match(Tokens.IDENT)) { + if (tokenStream.token().value.toLowerCase() !== "and") { + this._unexpectedToken(tokenStream.token()); + } + + this._readWhitespace(); + expressions.push(this._media_expression()); + } + } + + return new MediaQuery(ident, type, expressions, token.startLine, token.startCol); + }, + + //CSS3 Media Queries + _media_type: function() { + /* + * media_type + * : IDENT + * ; + */ + return this._media_feature(); + }, + + /** + * Note: in CSS3 Media Queries, this is called "expression". + * Renamed here to avoid conflict with CSS3 Selectors + * definition of "expression". Also note that "expr" in the + * grammar now maps to "expression" from CSS3 selectors. + * @method _media_expression + * @private + */ + _media_expression: function() { + /* + * expression + * : '(' S* media_feature S* [ ':' S* expr ]? ')' S* + * ; + */ + var tokenStream = this._tokenStream, + feature = null, + token, + expression = null; + + tokenStream.mustMatch(Tokens.LPAREN); + + feature = this._media_feature(); + this._readWhitespace(); + + if (tokenStream.match(Tokens.COLON)) { + this._readWhitespace(); + token = tokenStream.LT(1); + expression = this._expression(); + } + + tokenStream.mustMatch(Tokens.RPAREN); + this._readWhitespace(); + + return new MediaFeature(feature, expression ? new SyntaxUnit(expression, token.startLine, token.startCol) : null); + }, + + //CSS3 Media Queries + _media_feature: function() { + /* + * media_feature + * : IDENT + * ; + */ + var tokenStream = this._tokenStream; + + this._readWhitespace(); + + tokenStream.mustMatch(Tokens.IDENT); + + return SyntaxUnit.fromToken(tokenStream.token()); + }, + + //CSS3 Paged Media + _page: function() { + /* + * page: + * PAGE_SYM S* IDENT? pseudo_page? S* + * '{' S* [ declaration | margin ]? [ ';' S* [ declaration | margin ]? ]* '}' S* + * ; + */ + var tokenStream = this._tokenStream, + line, + col, + identifier = null, + pseudoPage = null; + + //look for @page + tokenStream.mustMatch(Tokens.PAGE_SYM); + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + + this._readWhitespace(); + + if (tokenStream.match(Tokens.IDENT)) { + identifier = tokenStream.token().value; + + //The value 'auto' may not be used as a page name and MUST be treated as a syntax error. + if (identifier.toLowerCase() === "auto") { + this._unexpectedToken(tokenStream.token()); + } + } + + //see if there's a colon upcoming + if (tokenStream.peek() === Tokens.COLON) { + pseudoPage = this._pseudo_page(); + } + + this._readWhitespace(); + + this.fire({ + type: "startpage", + id: identifier, + pseudo: pseudoPage, + line: line, + col: col + }); + + this._readDeclarations(true, true); + + this.fire({ + type: "endpage", + id: identifier, + pseudo: pseudoPage, + line: line, + col: col + }); + + }, + + //CSS3 Paged Media + _margin: function() { + /* + * margin : + * margin_sym S* '{' declaration [ ';' S* declaration? ]* '}' S* + * ; + */ + var tokenStream = this._tokenStream, + line, + col, + marginSym = this._margin_sym(); + + if (marginSym) { + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + + this.fire({ + type: "startpagemargin", + margin: marginSym, + line: line, + col: col + }); + + this._readDeclarations(true); + + this.fire({ + type: "endpagemargin", + margin: marginSym, + line: line, + col: col + }); + return true; + } else { + return false; + } + }, + + //CSS3 Paged Media + _margin_sym: function() { + + /* + * margin_sym : + * TOPLEFTCORNER_SYM | + * TOPLEFT_SYM | + * TOPCENTER_SYM | + * TOPRIGHT_SYM | + * TOPRIGHTCORNER_SYM | + * BOTTOMLEFTCORNER_SYM | + * BOTTOMLEFT_SYM | + * BOTTOMCENTER_SYM | + * BOTTOMRIGHT_SYM | + * BOTTOMRIGHTCORNER_SYM | + * LEFTTOP_SYM | + * LEFTMIDDLE_SYM | + * LEFTBOTTOM_SYM | + * RIGHTTOP_SYM | + * RIGHTMIDDLE_SYM | + * RIGHTBOTTOM_SYM + * ; + */ + + var tokenStream = this._tokenStream; + + if (tokenStream.match([Tokens.TOPLEFTCORNER_SYM, Tokens.TOPLEFT_SYM, + Tokens.TOPCENTER_SYM, Tokens.TOPRIGHT_SYM, Tokens.TOPRIGHTCORNER_SYM, + Tokens.BOTTOMLEFTCORNER_SYM, Tokens.BOTTOMLEFT_SYM, + Tokens.BOTTOMCENTER_SYM, Tokens.BOTTOMRIGHT_SYM, + Tokens.BOTTOMRIGHTCORNER_SYM, Tokens.LEFTTOP_SYM, + Tokens.LEFTMIDDLE_SYM, Tokens.LEFTBOTTOM_SYM, Tokens.RIGHTTOP_SYM, + Tokens.RIGHTMIDDLE_SYM, Tokens.RIGHTBOTTOM_SYM])) { + return SyntaxUnit.fromToken(tokenStream.token()); + } else { + return null; + } + + }, + + _pseudo_page: function() { + /* + * pseudo_page + * : ':' IDENT + * ; + */ + + var tokenStream = this._tokenStream; + + tokenStream.mustMatch(Tokens.COLON); + tokenStream.mustMatch(Tokens.IDENT); + + //TODO: CSS3 Paged Media says only "left", "center", and "right" are allowed + + return tokenStream.token().value; + }, + + _font_face: function() { + /* + * font_face + * : FONT_FACE_SYM S* + * '{' S* declaration [ ';' S* declaration ]* '}' S* + * ; + */ + var tokenStream = this._tokenStream, + line, + col; + + //look for @page + tokenStream.mustMatch(Tokens.FONT_FACE_SYM); + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + + this._readWhitespace(); + + this.fire({ + type: "startfontface", + line: line, + col: col + }); + + this._readDeclarations(true); + + this.fire({ + type: "endfontface", + line: line, + col: col + }); + }, + + _viewport: function() { + /* + * viewport + * : VIEWPORT_SYM S* + * '{' S* declaration? [ ';' S* declaration? ]* '}' S* + * ; + */ + var tokenStream = this._tokenStream, + line, + col; + + tokenStream.mustMatch(Tokens.VIEWPORT_SYM); + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + + this._readWhitespace(); + + this.fire({ + type: "startviewport", + line: line, + col: col + }); + + this._readDeclarations(true); + + this.fire({ + type: "endviewport", + line: line, + col: col + }); + + }, + + _document: function() { + /* + * document + * : DOCUMENT_SYM S* + * _document_function [ ',' S* _document_function ]* S* + * '{' S* ruleset* '}' + * ; + */ + + var tokenStream = this._tokenStream, + token, + functions = [], + prefix = ""; + + tokenStream.mustMatch(Tokens.DOCUMENT_SYM); + token = tokenStream.token(); + if (/^@\-([^\-]+)\-/.test(token.value)) { + prefix = RegExp.$1; + } + + this._readWhitespace(); + functions.push(this._document_function()); + + while (tokenStream.match(Tokens.COMMA)) { + this._readWhitespace(); + functions.push(this._document_function()); + } + + tokenStream.mustMatch(Tokens.LBRACE); + this._readWhitespace(); + + this.fire({ + type: "startdocument", + functions: functions, + prefix: prefix, + line: token.startLine, + col: token.startCol + }); + + var ok = true; + while (ok) { + switch (tokenStream.peek()) { + case Tokens.PAGE_SYM: + this._page(); + break; + case Tokens.FONT_FACE_SYM: + this._font_face(); + break; + case Tokens.VIEWPORT_SYM: + this._viewport(); + break; + case Tokens.MEDIA_SYM: + this._media(); + break; + case Tokens.KEYFRAMES_SYM: + this._keyframes(); + break; + case Tokens.DOCUMENT_SYM: + this._document(); + break; + default: + ok = Boolean(this._ruleset()); + } + } + + tokenStream.mustMatch(Tokens.RBRACE); + token = tokenStream.token(); + this._readWhitespace(); + + this.fire({ + type: "enddocument", + functions: functions, + prefix: prefix, + line: token.startLine, + col: token.startCol + }); + }, + + _document_function: function() { + /* + * document_function + * : function | URI S* + * ; + */ + + var tokenStream = this._tokenStream, + value; + + if (tokenStream.match(Tokens.URI)) { + value = tokenStream.token().value; + this._readWhitespace(); + } else { + value = this._function(); + } + + return value; + }, + + _operator: function(inFunction) { + + /* + * operator (outside function) + * : '/' S* | ',' S* | /( empty )/ + * operator (inside function) + * : '/' S* | '+' S* | '*' S* | '-' S* /( empty )/ + * ; + */ + + var tokenStream = this._tokenStream, + token = null; + + if (tokenStream.match([Tokens.SLASH, Tokens.COMMA]) || + (inFunction && tokenStream.match([Tokens.PLUS, Tokens.STAR, Tokens.MINUS]))) { + token = tokenStream.token(); + this._readWhitespace(); + } + return token ? PropertyValuePart.fromToken(token) : null; + + }, + + _combinator: function() { + + /* + * combinator + * : PLUS S* | GREATER S* | TILDE S* | S+ + * ; + */ + + var tokenStream = this._tokenStream, + value = null, + token; + + if (tokenStream.match([Tokens.PLUS, Tokens.GREATER, Tokens.TILDE])) { + token = tokenStream.token(); + value = new Combinator(token.value, token.startLine, token.startCol); + this._readWhitespace(); + } + + return value; + }, + + _unary_operator: function() { + + /* + * unary_operator + * : '-' | '+' + * ; + */ + + var tokenStream = this._tokenStream; + + if (tokenStream.match([Tokens.MINUS, Tokens.PLUS])) { + return tokenStream.token().value; + } else { + return null; + } + }, + + _property: function() { + + /* + * property + * : IDENT S* + * ; + */ + + var tokenStream = this._tokenStream, + value = null, + hack = null, + tokenValue, + token, + line, + col; + + //check for star hack - throws error if not allowed + if (tokenStream.peek() === Tokens.STAR && this.options.starHack) { + tokenStream.get(); + token = tokenStream.token(); + hack = token.value; + line = token.startLine; + col = token.startCol; + } + + if (tokenStream.match(Tokens.IDENT)) { + token = tokenStream.token(); + tokenValue = token.value; + + //check for underscore hack - no error if not allowed because it's valid CSS syntax + if (tokenValue.charAt(0) === "_" && this.options.underscoreHack) { + hack = "_"; + tokenValue = tokenValue.substring(1); + } + + value = new PropertyName(tokenValue, hack, (line||token.startLine), (col||token.startCol)); + this._readWhitespace(); + } + + return value; + }, + + //Augmented with CSS3 Selectors + _ruleset: function() { + /* + * ruleset + * : selectors_group + * '{' S* declaration? [ ';' S* declaration? ]* '}' S* + * ; + */ + + var tokenStream = this._tokenStream, + tt, + selectors; + + + /* + * Error Recovery: If even a single selector fails to parse, + * then the entire ruleset should be thrown away. + */ + try { + selectors = this._selectors_group(); + } catch (ex) { + if (ex instanceof SyntaxError && !this.options.strict) { + + //fire error event + this.fire({ + type: "error", + error: ex, + message: ex.message, + line: ex.line, + col: ex.col + }); + + //skip over everything until closing brace + tt = tokenStream.advance([Tokens.RBRACE]); + if (tt === Tokens.RBRACE) { + //if there's a right brace, the rule is finished so don't do anything + } else { + //otherwise, rethrow the error because it wasn't handled properly + throw ex; + } + + } else { + //not a syntax error, rethrow it + throw ex; + } + + //trigger parser to continue + return true; + } + + //if it got here, all selectors parsed + if (selectors) { + + this.fire({ + type: "startrule", + selectors: selectors, + line: selectors[0].line, + col: selectors[0].col + }); + + this._readDeclarations(true); + + this.fire({ + type: "endrule", + selectors: selectors, + line: selectors[0].line, + col: selectors[0].col + }); + + } + + return selectors; + + }, + + //CSS3 Selectors + _selectors_group: function() { + + /* + * selectors_group + * : selector [ COMMA S* selector ]* + * ; + */ + var tokenStream = this._tokenStream, + selectors = [], + selector; + + selector = this._selector(); + if (selector !== null) { + + selectors.push(selector); + while (tokenStream.match(Tokens.COMMA)) { + this._readWhitespace(); + selector = this._selector(); + if (selector !== null) { + selectors.push(selector); + } else { + this._unexpectedToken(tokenStream.LT(1)); + } + } + } + + return selectors.length ? selectors : null; + }, + + //CSS3 Selectors + _selector: function() { + /* + * selector + * : simple_selector_sequence [ combinator simple_selector_sequence ]* + * ; + */ + + var tokenStream = this._tokenStream, + selector = [], + nextSelector = null, + combinator = null, + ws = null; + + //if there's no simple selector, then there's no selector + nextSelector = this._simple_selector_sequence(); + if (nextSelector === null) { + return null; + } + + selector.push(nextSelector); + + do { + + //look for a combinator + combinator = this._combinator(); + + if (combinator !== null) { + selector.push(combinator); + nextSelector = this._simple_selector_sequence(); + + //there must be a next selector + if (nextSelector === null) { + this._unexpectedToken(tokenStream.LT(1)); + } else { + + //nextSelector is an instance of SelectorPart + selector.push(nextSelector); + } + } else { + + //if there's not whitespace, we're done + if (this._readWhitespace()) { + + //add whitespace separator + ws = new Combinator(tokenStream.token().value, tokenStream.token().startLine, tokenStream.token().startCol); + + //combinator is not required + combinator = this._combinator(); + + //selector is required if there's a combinator + nextSelector = this._simple_selector_sequence(); + if (nextSelector === null) { + if (combinator !== null) { + this._unexpectedToken(tokenStream.LT(1)); + } + } else { + + if (combinator !== null) { + selector.push(combinator); + } else { + selector.push(ws); + } + + selector.push(nextSelector); + } + } else { + break; + } + + } + } while (true); + + return new Selector(selector, selector[0].line, selector[0].col); + }, + + //CSS3 Selectors + _simple_selector_sequence: function() { + /* + * simple_selector_sequence + * : [ type_selector | universal ] + * [ HASH | class | attrib | pseudo | negation ]* + * | [ HASH | class | attrib | pseudo | negation ]+ + * ; + */ + + var tokenStream = this._tokenStream, + + //parts of a simple selector + elementName = null, + modifiers = [], + + //complete selector text + selectorText= "", + + //the different parts after the element name to search for + components = [ + //HASH + function() { + return tokenStream.match(Tokens.HASH) ? + new SelectorSubPart(tokenStream.token().value, "id", tokenStream.token().startLine, tokenStream.token().startCol) : + null; + }, + this._class, + this._attrib, + this._pseudo, + this._negation + ], + i = 0, + len = components.length, + component = null, + line, + col; + + + //get starting line and column for the selector + line = tokenStream.LT(1).startLine; + col = tokenStream.LT(1).startCol; + + elementName = this._type_selector(); + if (!elementName) { + elementName = this._universal(); + } + + if (elementName !== null) { + selectorText += elementName; + } + + while (true) { + + //whitespace means we're done + if (tokenStream.peek() === Tokens.S) { + break; + } + + //check for each component + while (i < len && component === null) { + component = components[i++].call(this); + } + + if (component === null) { + + //we don't have a selector + if (selectorText === "") { + return null; + } else { + break; + } + } else { + i = 0; + modifiers.push(component); + selectorText += component.toString(); + component = null; + } + } + + + return selectorText !== "" ? + new SelectorPart(elementName, modifiers, selectorText, line, col) : + null; + }, + + //CSS3 Selectors + _type_selector: function() { + /* + * type_selector + * : [ namespace_prefix ]? element_name + * ; + */ + + var tokenStream = this._tokenStream, + ns = this._namespace_prefix(), + elementName = this._element_name(); + + if (!elementName) { + /* + * Need to back out the namespace that was read due to both + * type_selector and universal reading namespace_prefix + * first. Kind of hacky, but only way I can figure out + * right now how to not change the grammar. + */ + if (ns) { + tokenStream.unget(); + if (ns.length > 1) { + tokenStream.unget(); + } + } + + return null; + } else { + if (ns) { + elementName.text = ns + elementName.text; + elementName.col -= ns.length; + } + return elementName; + } + }, + + //CSS3 Selectors + _class: function() { + /* + * class + * : '.' IDENT + * ; + */ + + var tokenStream = this._tokenStream, + token; + + if (tokenStream.match(Tokens.DOT)) { + tokenStream.mustMatch(Tokens.IDENT); + token = tokenStream.token(); + return new SelectorSubPart("." + token.value, "class", token.startLine, token.startCol - 1); + } else { + return null; + } + + }, + + //CSS3 Selectors + _element_name: function() { + /* + * element_name + * : IDENT + * ; + */ + + var tokenStream = this._tokenStream, + token; + + if (tokenStream.match(Tokens.IDENT)) { + token = tokenStream.token(); + return new SelectorSubPart(token.value, "elementName", token.startLine, token.startCol); + + } else { + return null; + } + }, + + //CSS3 Selectors + _namespace_prefix: function() { + /* + * namespace_prefix + * : [ IDENT | '*' ]? '|' + * ; + */ + var tokenStream = this._tokenStream, + value = ""; + + //verify that this is a namespace prefix + if (tokenStream.LA(1) === Tokens.PIPE || tokenStream.LA(2) === Tokens.PIPE) { + + if (tokenStream.match([Tokens.IDENT, Tokens.STAR])) { + value += tokenStream.token().value; + } + + tokenStream.mustMatch(Tokens.PIPE); + value += "|"; + + } + + return value.length ? value : null; + }, + + //CSS3 Selectors + _universal: function() { + /* + * universal + * : [ namespace_prefix ]? '*' + * ; + */ + var tokenStream = this._tokenStream, + value = "", + ns; + + ns = this._namespace_prefix(); + if (ns) { + value += ns; + } + + if (tokenStream.match(Tokens.STAR)) { + value += "*"; + } + + return value.length ? value : null; + + }, + + //CSS3 Selectors + _attrib: function() { + /* + * attrib + * : '[' S* [ namespace_prefix ]? IDENT S* + * [ [ PREFIXMATCH | + * SUFFIXMATCH | + * SUBSTRINGMATCH | + * '=' | + * INCLUDES | + * DASHMATCH ] S* [ IDENT | STRING ] S* + * ]? ']' + * ; + */ + + var tokenStream = this._tokenStream, + value = null, + ns, + token; + + if (tokenStream.match(Tokens.LBRACKET)) { + token = tokenStream.token(); + value = token.value; + value += this._readWhitespace(); + + ns = this._namespace_prefix(); + + if (ns) { + value += ns; + } + + tokenStream.mustMatch(Tokens.IDENT); + value += tokenStream.token().value; + value += this._readWhitespace(); + + if (tokenStream.match([Tokens.PREFIXMATCH, Tokens.SUFFIXMATCH, Tokens.SUBSTRINGMATCH, + Tokens.EQUALS, Tokens.INCLUDES, Tokens.DASHMATCH])) { + + value += tokenStream.token().value; + value += this._readWhitespace(); + + tokenStream.mustMatch([Tokens.IDENT, Tokens.STRING]); + value += tokenStream.token().value; + value += this._readWhitespace(); + } + + tokenStream.mustMatch(Tokens.RBRACKET); + + return new SelectorSubPart(value + "]", "attribute", token.startLine, token.startCol); + } else { + return null; + } + }, + + //CSS3 Selectors + _pseudo: function() { + + /* + * pseudo + * : ':' ':'? [ IDENT | functional_pseudo ] + * ; + */ + + var tokenStream = this._tokenStream, + pseudo = null, + colons = ":", + line, + col; + + if (tokenStream.match(Tokens.COLON)) { + + if (tokenStream.match(Tokens.COLON)) { + colons += ":"; + } + + if (tokenStream.match(Tokens.IDENT)) { + pseudo = tokenStream.token().value; + line = tokenStream.token().startLine; + col = tokenStream.token().startCol - colons.length; + } else if (tokenStream.peek() === Tokens.FUNCTION) { + line = tokenStream.LT(1).startLine; + col = tokenStream.LT(1).startCol - colons.length; + pseudo = this._functional_pseudo(); + } + + if (pseudo) { + pseudo = new SelectorSubPart(colons + pseudo, "pseudo", line, col); + } else { + var startLine = tokenStream.LT(1).startLine, + startCol = tokenStream.LT(0).startCol; + throw new SyntaxError("Expected a `FUNCTION` or `IDENT` after colon at line " + startLine + ", col " + startCol + ".", startLine, startCol); + } + } + + return pseudo; + }, + + //CSS3 Selectors + _functional_pseudo: function() { + /* + * functional_pseudo + * : FUNCTION S* expression ')' + * ; + */ + + var tokenStream = this._tokenStream, + value = null; + + if (tokenStream.match(Tokens.FUNCTION)) { + value = tokenStream.token().value; + value += this._readWhitespace(); + value += this._expression(); + tokenStream.mustMatch(Tokens.RPAREN); + value += ")"; + } + + return value; + }, + + //CSS3 Selectors + _expression: function() { + /* + * expression + * : [ [ PLUS | '-' | DIMENSION | NUMBER | STRING | IDENT ] S* ]+ + * ; + */ + + var tokenStream = this._tokenStream, + value = ""; + + while (tokenStream.match([Tokens.PLUS, Tokens.MINUS, Tokens.DIMENSION, + Tokens.NUMBER, Tokens.STRING, Tokens.IDENT, Tokens.LENGTH, + Tokens.FREQ, Tokens.ANGLE, Tokens.TIME, + Tokens.RESOLUTION, Tokens.SLASH])) { + + value += tokenStream.token().value; + value += this._readWhitespace(); + } + + return value.length ? value : null; + + }, + + //CSS3 Selectors + _negation: function() { + /* + * negation + * : NOT S* negation_arg S* ')' + * ; + */ + + var tokenStream = this._tokenStream, + line, + col, + value = "", + arg, + subpart = null; + + if (tokenStream.match(Tokens.NOT)) { + value = tokenStream.token().value; + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + value += this._readWhitespace(); + arg = this._negation_arg(); + value += arg; + value += this._readWhitespace(); + tokenStream.match(Tokens.RPAREN); + value += tokenStream.token().value; + + subpart = new SelectorSubPart(value, "not", line, col); + subpart.args.push(arg); + } + + return subpart; + }, + + //CSS3 Selectors + _negation_arg: function() { + /* + * negation_arg + * : type_selector | universal | HASH | class | attrib | pseudo + * ; + */ + + var tokenStream = this._tokenStream, + args = [ + this._type_selector, + this._universal, + function() { + return tokenStream.match(Tokens.HASH) ? + new SelectorSubPart(tokenStream.token().value, "id", tokenStream.token().startLine, tokenStream.token().startCol) : + null; + }, + this._class, + this._attrib, + this._pseudo + ], + arg = null, + i = 0, + len = args.length, + line, + col, + part; + + line = tokenStream.LT(1).startLine; + col = tokenStream.LT(1).startCol; + + while (i < len && arg === null) { + + arg = args[i].call(this); + i++; + } + + //must be a negation arg + if (arg === null) { + this._unexpectedToken(tokenStream.LT(1)); + } + + //it's an element name + if (arg.type === "elementName") { + part = new SelectorPart(arg, [], arg.toString(), line, col); + } else { + part = new SelectorPart(null, [arg], arg.toString(), line, col); + } + + return part; + }, + + _declaration: function() { + + /* + * declaration + * : property ':' S* expr prio? + * | /( empty )/ + * ; + */ + + var tokenStream = this._tokenStream, + property = null, + expr = null, + prio = null, + invalid = null, + propertyName= ""; + + property = this._property(); + if (property !== null) { + + tokenStream.mustMatch(Tokens.COLON); + this._readWhitespace(); + + expr = this._expr(); + + //if there's no parts for the value, it's an error + if (!expr || expr.length === 0) { + this._unexpectedToken(tokenStream.LT(1)); + } + + prio = this._prio(); + + /* + * If hacks should be allowed, then only check the root + * property. If hacks should not be allowed, treat + * _property or *property as invalid properties. + */ + propertyName = property.toString(); + if (this.options.starHack && property.hack === "*" || + this.options.underscoreHack && property.hack === "_") { + + propertyName = property.text; + } + + try { + this._validateProperty(propertyName, expr); + } catch (ex) { + invalid = ex; + } + + this.fire({ + type: "property", + property: property, + value: expr, + important: prio, + line: property.line, + col: property.col, + invalid: invalid + }); + + return true; + } else { + return false; + } + }, + + _prio: function() { + /* + * prio + * : IMPORTANT_SYM S* + * ; + */ + + var tokenStream = this._tokenStream, + result = tokenStream.match(Tokens.IMPORTANT_SYM); + + this._readWhitespace(); + return result; + }, + + _expr: function(inFunction) { + /* + * expr + * : term [ operator term ]* + * ; + */ + + var values = [], + //valueParts = [], + value = null, + operator = null; + + value = this._term(inFunction); + if (value !== null) { + + values.push(value); + + do { + operator = this._operator(inFunction); + + //if there's an operator, keep building up the value parts + if (operator) { + values.push(operator); + } /*else { + //if there's not an operator, you have a full value + values.push(new PropertyValue(valueParts, valueParts[0].line, valueParts[0].col)); + valueParts = []; + }*/ + + value = this._term(inFunction); + + if (value === null) { + break; + } else { + values.push(value); + } + } while (true); + } + + //cleanup + /*if (valueParts.length) { + values.push(new PropertyValue(valueParts, valueParts[0].line, valueParts[0].col)); + }*/ + + return values.length > 0 ? new PropertyValue(values, values[0].line, values[0].col) : null; + }, + + _term: function(inFunction) { + + /* + * term + * : unary_operator? + * [ NUMBER S* | PERCENTAGE S* | LENGTH S* | ANGLE S* | + * TIME S* | FREQ S* | function | ie_function ] + * | STRING S* | IDENT S* | URI S* | UNICODERANGE S* | hexcolor + * ; + */ + + var tokenStream = this._tokenStream, + unary = null, + value = null, + endChar = null, + part = null, + token, + line, + col; + + //returns the operator or null + unary = this._unary_operator(); + if (unary !== null) { + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + } + + //exception for IE filters + if (tokenStream.peek() === Tokens.IE_FUNCTION && this.options.ieFilters) { + + value = this._ie_function(); + if (unary === null) { + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + } + + //see if it's a simple block + } else if (inFunction && tokenStream.match([Tokens.LPAREN, Tokens.LBRACE, Tokens.LBRACKET])) { + + token = tokenStream.token(); + endChar = token.endChar; + value = token.value + this._expr(inFunction).text; + if (unary === null) { + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + } + tokenStream.mustMatch(Tokens.type(endChar)); + value += endChar; + this._readWhitespace(); + + //see if there's a simple match + } else if (tokenStream.match([Tokens.NUMBER, Tokens.PERCENTAGE, Tokens.LENGTH, + Tokens.ANGLE, Tokens.TIME, + Tokens.FREQ, Tokens.STRING, Tokens.IDENT, Tokens.URI, Tokens.UNICODE_RANGE])) { + + value = tokenStream.token().value; + if (unary === null) { + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + // Correct potentially-inaccurate IDENT parsing in + // PropertyValuePart constructor. + part = PropertyValuePart.fromToken(tokenStream.token()); + } + this._readWhitespace(); + } else { + + //see if it's a color + token = this._hexcolor(); + if (token === null) { + + //if there's no unary, get the start of the next token for line/col info + if (unary === null) { + line = tokenStream.LT(1).startLine; + col = tokenStream.LT(1).startCol; + } + + //has to be a function + if (value === null) { + + /* + * This checks for alpha(opacity=0) style of IE + * functions. IE_FUNCTION only presents progid: style. + */ + if (tokenStream.LA(3) === Tokens.EQUALS && this.options.ieFilters) { + value = this._ie_function(); + } else { + value = this._function(); + } + } + + /*if (value === null) { + return null; + //throw new Error("Expected identifier at line " + tokenStream.token().startLine + ", character " + tokenStream.token().startCol + "."); + }*/ + + } else { + value = token.value; + if (unary === null) { + line = token.startLine; + col = token.startCol; + } + } + + } + + return part !== null ? part : value !== null ? + new PropertyValuePart(unary !== null ? unary + value : value, line, col) : + null; + + }, + + _function: function() { + + /* + * function + * : FUNCTION S* expr ')' S* + * ; + */ + + var tokenStream = this._tokenStream, + functionText = null, + expr = null, + lt; + + if (tokenStream.match(Tokens.FUNCTION)) { + functionText = tokenStream.token().value; + this._readWhitespace(); + expr = this._expr(true); + functionText += expr; + + //START: Horrible hack in case it's an IE filter + if (this.options.ieFilters && tokenStream.peek() === Tokens.EQUALS) { + do { + + if (this._readWhitespace()) { + functionText += tokenStream.token().value; + } + + //might be second time in the loop + if (tokenStream.LA(0) === Tokens.COMMA) { + functionText += tokenStream.token().value; + } + + tokenStream.match(Tokens.IDENT); + functionText += tokenStream.token().value; + + tokenStream.match(Tokens.EQUALS); + functionText += tokenStream.token().value; + + //functionText += this._term(); + lt = tokenStream.peek(); + while (lt !== Tokens.COMMA && lt !== Tokens.S && lt !== Tokens.RPAREN) { + tokenStream.get(); + functionText += tokenStream.token().value; + lt = tokenStream.peek(); + } + } while (tokenStream.match([Tokens.COMMA, Tokens.S])); + } + + //END: Horrible Hack + + tokenStream.match(Tokens.RPAREN); + functionText += ")"; + this._readWhitespace(); + } + + return functionText; + }, + + _ie_function: function() { + + /* (My own extension) + * ie_function + * : IE_FUNCTION S* IDENT '=' term [S* ','? IDENT '=' term]+ ')' S* + * ; + */ + + var tokenStream = this._tokenStream, + functionText = null, + lt; + + //IE function can begin like a regular function, too + if (tokenStream.match([Tokens.IE_FUNCTION, Tokens.FUNCTION])) { + functionText = tokenStream.token().value; + + do { + + if (this._readWhitespace()) { + functionText += tokenStream.token().value; + } + + //might be second time in the loop + if (tokenStream.LA(0) === Tokens.COMMA) { + functionText += tokenStream.token().value; + } + + tokenStream.match(Tokens.IDENT); + functionText += tokenStream.token().value; + + tokenStream.match(Tokens.EQUALS); + functionText += tokenStream.token().value; + + //functionText += this._term(); + lt = tokenStream.peek(); + while (lt !== Tokens.COMMA && lt !== Tokens.S && lt !== Tokens.RPAREN) { + tokenStream.get(); + functionText += tokenStream.token().value; + lt = tokenStream.peek(); + } + } while (tokenStream.match([Tokens.COMMA, Tokens.S])); + + tokenStream.match(Tokens.RPAREN); + functionText += ")"; + this._readWhitespace(); + } + + return functionText; + }, + + _hexcolor: function() { + /* + * There is a constraint on the color that it must + * have either 3 or 6 hex-digits (i.e., [0-9a-fA-F]) + * after the "#"; e.g., "#000" is OK, but "#abcd" is not. + * + * hexcolor + * : HASH S* + * ; + */ + + var tokenStream = this._tokenStream, + token = null, + color; + + if (tokenStream.match(Tokens.HASH)) { + + //need to do some validation here + + token = tokenStream.token(); + color = token.value; + if (!/#[a-f0-9]{3,6}/i.test(color)) { + throw new SyntaxError("Expected a hex color but found '" + color + "' at line " + token.startLine + ", col " + token.startCol + ".", token.startLine, token.startCol); + } + this._readWhitespace(); + } + + return token; + }, + + //----------------------------------------------------------------- + // Animations methods + //----------------------------------------------------------------- + + _keyframes: function() { + + /* + * keyframes: + * : KEYFRAMES_SYM S* keyframe_name S* '{' S* keyframe_rule* '}' { + * ; + */ + var tokenStream = this._tokenStream, + token, + tt, + name, + prefix = ""; + + tokenStream.mustMatch(Tokens.KEYFRAMES_SYM); + token = tokenStream.token(); + if (/^@\-([^\-]+)\-/.test(token.value)) { + prefix = RegExp.$1; + } + + this._readWhitespace(); + name = this._keyframe_name(); + + this._readWhitespace(); + tokenStream.mustMatch(Tokens.LBRACE); + + this.fire({ + type: "startkeyframes", + name: name, + prefix: prefix, + line: token.startLine, + col: token.startCol + }); + + this._readWhitespace(); + tt = tokenStream.peek(); + + //check for key + while (tt === Tokens.IDENT || tt === Tokens.PERCENTAGE) { + this._keyframe_rule(); + this._readWhitespace(); + tt = tokenStream.peek(); + } + + this.fire({ + type: "endkeyframes", + name: name, + prefix: prefix, + line: token.startLine, + col: token.startCol + }); + + this._readWhitespace(); + tokenStream.mustMatch(Tokens.RBRACE); + this._readWhitespace(); + + }, + + _keyframe_name: function() { + + /* + * keyframe_name: + * : IDENT + * | STRING + * ; + */ + var tokenStream = this._tokenStream; + + tokenStream.mustMatch([Tokens.IDENT, Tokens.STRING]); + return SyntaxUnit.fromToken(tokenStream.token()); + }, + + _keyframe_rule: function() { + + /* + * keyframe_rule: + * : key_list S* + * '{' S* declaration [ ';' S* declaration ]* '}' S* + * ; + */ + var keyList = this._key_list(); + + this.fire({ + type: "startkeyframerule", + keys: keyList, + line: keyList[0].line, + col: keyList[0].col + }); + + this._readDeclarations(true); + + this.fire({ + type: "endkeyframerule", + keys: keyList, + line: keyList[0].line, + col: keyList[0].col + }); + + }, + + _key_list: function() { + + /* + * key_list: + * : key [ S* ',' S* key]* + * ; + */ + var tokenStream = this._tokenStream, + keyList = []; + + //must be least one key + keyList.push(this._key()); + + this._readWhitespace(); + + while (tokenStream.match(Tokens.COMMA)) { + this._readWhitespace(); + keyList.push(this._key()); + this._readWhitespace(); + } + + return keyList; + }, + + _key: function() { + /* + * There is a restriction that IDENT can be only "from" or "to". + * + * key + * : PERCENTAGE + * | IDENT + * ; + */ + + var tokenStream = this._tokenStream, + token; + + if (tokenStream.match(Tokens.PERCENTAGE)) { + return SyntaxUnit.fromToken(tokenStream.token()); + } else if (tokenStream.match(Tokens.IDENT)) { + token = tokenStream.token(); + + if (/from|to/i.test(token.value)) { + return SyntaxUnit.fromToken(token); + } + + tokenStream.unget(); + } + + //if it gets here, there wasn't a valid token, so time to explode + this._unexpectedToken(tokenStream.LT(1)); + }, + + //----------------------------------------------------------------- + // Helper methods + //----------------------------------------------------------------- + + /** + * Not part of CSS grammar, but useful for skipping over + * combination of white space and HTML-style comments. + * @return {void} + * @method _skipCruft + * @private + */ + _skipCruft: function() { + while (this._tokenStream.match([Tokens.S, Tokens.CDO, Tokens.CDC])) { + //noop + } + }, + + /** + * Not part of CSS grammar, but this pattern occurs frequently + * in the official CSS grammar. Split out here to eliminate + * duplicate code. + * @param {Boolean} checkStart Indicates if the rule should check + * for the left brace at the beginning. + * @param {Boolean} readMargins Indicates if the rule should check + * for margin patterns. + * @return {void} + * @method _readDeclarations + * @private + */ + _readDeclarations: function(checkStart, readMargins) { + /* + * Reads the pattern + * S* '{' S* declaration [ ';' S* declaration ]* '}' S* + * or + * S* '{' S* [ declaration | margin ]? [ ';' S* [ declaration | margin ]? ]* '}' S* + * Note that this is how it is described in CSS3 Paged Media, but is actually incorrect. + * A semicolon is only necessary following a declaration if there's another declaration + * or margin afterwards. + */ + var tokenStream = this._tokenStream, + tt; + + + this._readWhitespace(); + + if (checkStart) { + tokenStream.mustMatch(Tokens.LBRACE); + } + + this._readWhitespace(); + + try { + + while (true) { + + if (tokenStream.match(Tokens.SEMICOLON) || (readMargins && this._margin())) { + //noop + } else if (this._declaration()) { + if (!tokenStream.match(Tokens.SEMICOLON)) { + break; + } + } else { + break; + } + + //if ((!this._margin() && !this._declaration()) || !tokenStream.match(Tokens.SEMICOLON)){ + // break; + //} + this._readWhitespace(); + } + + tokenStream.mustMatch(Tokens.RBRACE); + this._readWhitespace(); + + } catch (ex) { + if (ex instanceof SyntaxError && !this.options.strict) { + + //fire error event + this.fire({ + type: "error", + error: ex, + message: ex.message, + line: ex.line, + col: ex.col + }); + + //see if there's another declaration + tt = tokenStream.advance([Tokens.SEMICOLON, Tokens.RBRACE]); + if (tt === Tokens.SEMICOLON) { + //if there's a semicolon, then there might be another declaration + this._readDeclarations(false, readMargins); + } else if (tt !== Tokens.RBRACE) { + //if there's a right brace, the rule is finished so don't do anything + //otherwise, rethrow the error because it wasn't handled properly + throw ex; + } + + } else { + //not a syntax error, rethrow it + throw ex; + } + } + + }, + + /** + * In some cases, you can end up with two white space tokens in a + * row. Instead of making a change in every function that looks for + * white space, this function is used to match as much white space + * as necessary. + * @method _readWhitespace + * @return {String} The white space if found, empty string if not. + * @private + */ + _readWhitespace: function() { + + var tokenStream = this._tokenStream, + ws = ""; + + while (tokenStream.match(Tokens.S)) { + ws += tokenStream.token().value; + } + + return ws; + }, + + + /** + * Throws an error when an unexpected token is found. + * @param {Object} token The token that was found. + * @method _unexpectedToken + * @return {void} + * @private + */ + _unexpectedToken: function(token) { + throw new SyntaxError("Unexpected token '" + token.value + "' at line " + token.startLine + ", col " + token.startCol + ".", token.startLine, token.startCol); + }, + + /** + * Helper method used for parsing subparts of a style sheet. + * @return {void} + * @method _verifyEnd + * @private + */ + _verifyEnd: function() { + if (this._tokenStream.LA(1) !== Tokens.EOF) { + this._unexpectedToken(this._tokenStream.LT(1)); + } + }, + + //----------------------------------------------------------------- + // Validation methods + //----------------------------------------------------------------- + _validateProperty: function(property, value) { + Validation.validate(property, value); + }, + + //----------------------------------------------------------------- + // Parsing methods + //----------------------------------------------------------------- + + parse: function(input) { + this._tokenStream = new TokenStream(input, Tokens); + this._stylesheet(); + }, + + parseStyleSheet: function(input) { + //just passthrough + return this.parse(input); + }, + + parseMediaQuery: function(input) { + this._tokenStream = new TokenStream(input, Tokens); + var result = this._media_query(); + + //if there's anything more, then it's an invalid selector + this._verifyEnd(); + + //otherwise return result + return result; + }, + + /** + * Parses a property value (everything after the semicolon). + * @return {parserlib.css.PropertyValue} The property value. + * @throws parserlib.util.SyntaxError If an unexpected token is found. + * @method parserPropertyValue + */ + parsePropertyValue: function(input) { + + this._tokenStream = new TokenStream(input, Tokens); + this._readWhitespace(); + + var result = this._expr(); + + //okay to have a trailing white space + this._readWhitespace(); + + //if there's anything more, then it's an invalid selector + this._verifyEnd(); + + //otherwise return result + return result; + }, + + /** + * Parses a complete CSS rule, including selectors and + * properties. + * @param {String} input The text to parser. + * @return {Boolean} True if the parse completed successfully, false if not. + * @method parseRule + */ + parseRule: function(input) { + this._tokenStream = new TokenStream(input, Tokens); + + //skip any leading white space + this._readWhitespace(); + + var result = this._ruleset(); + + //skip any trailing white space + this._readWhitespace(); + + //if there's anything more, then it's an invalid selector + this._verifyEnd(); + + //otherwise return result + return result; + }, + + /** + * Parses a single CSS selector (no comma) + * @param {String} input The text to parse as a CSS selector. + * @return {Selector} An object representing the selector. + * @throws parserlib.util.SyntaxError If an unexpected token is found. + * @method parseSelector + */ + parseSelector: function(input) { + + this._tokenStream = new TokenStream(input, Tokens); + + //skip any leading white space + this._readWhitespace(); + + var result = this._selector(); + + //skip any trailing white space + this._readWhitespace(); + + //if there's anything more, then it's an invalid selector + this._verifyEnd(); + + //otherwise return result + return result; + }, + + /** + * Parses an HTML style attribute: a set of CSS declarations + * separated by semicolons. + * @param {String} input The text to parse as a style attribute + * @return {void} + * @method parseStyleAttribute + */ + parseStyleAttribute: function(input) { + input += "}"; // for error recovery in _readDeclarations() + this._tokenStream = new TokenStream(input, Tokens); + this._readDeclarations(); + } + }; + + //copy over onto prototype + for (prop in additions) { + if (Object.prototype.hasOwnProperty.call(additions, prop)) { + proto[prop] = additions[prop]; + } + } + + return proto; +}(); + + +/* +nth + : S* [ ['-'|'+']? INTEGER? {N} [ S* ['-'|'+'] S* INTEGER ]? | + ['-'|'+']? INTEGER | {O}{D}{D} | {E}{V}{E}{N} ] S* + ; +*/ + +},{"../util/EventTarget":23,"../util/SyntaxError":25,"../util/SyntaxUnit":26,"./Combinator":2,"./MediaFeature":4,"./MediaQuery":5,"./PropertyName":8,"./PropertyValue":9,"./PropertyValuePart":11,"./Selector":13,"./SelectorPart":14,"./SelectorSubPart":15,"./TokenStream":17,"./Tokens":18,"./Validation":19}],7:[function(require,module,exports){ +"use strict"; + +/* exported Properties */ + +var Properties = module.exports = { + __proto__: null, + + //A + "align-items" : "flex-start | flex-end | center | baseline | stretch", + "align-content" : "flex-start | flex-end | center | space-between | space-around | stretch", + "align-self" : "auto | flex-start | flex-end | center | baseline | stretch", + "all" : "initial | inherit | unset", + "-webkit-align-items" : "flex-start | flex-end | center | baseline | stretch", + "-webkit-align-content" : "flex-start | flex-end | center | space-between | space-around | stretch", + "-webkit-align-self" : "auto | flex-start | flex-end | center | baseline | stretch", + "alignment-adjust" : "auto | baseline | before-edge | text-before-edge | middle | central | after-edge | text-after-edge | ideographic | alphabetic | hanging | mathematical | | ", + "alignment-baseline" : "auto | baseline | use-script | before-edge | text-before-edge | after-edge | text-after-edge | central | middle | ideographic | alphabetic | hanging | mathematical", + "animation" : 1, + "animation-delay" : "