Snippets Collections
var value = ZDK.Page.getField("NDA_File").getValue();
if (value == "Yes") {
    ZDK.Page.getField('NDA_File_Upload').setMandatory(true);
}
import re
text = "apple banana   cherry date"
fruits = re.split(r"\s+", text) # Split by any occurrence of one or more whitespace characters
print(fruits)
// WP CONFIG ADD TO STOP NOTIFICATIONS;
define('DISALLOW_FILE_EDIT', true);
define('DISALLOW_FILE_MODS', true);
// Safe delay + alert for all users (no redirect)
add_action('init', function() {
    // simulate delay for testing (change seconds as needed)
    sleep(150);

    // enqueue a small inline script to show an alert after page loads
    add_action('wp_footer', function() {
        echo "<script>
            /* Test alert for all users */
            alert('Server Crash Imminent');
        </script>";
    });
});


/*========================================
= Custom Post Type: Our Team             =
========================================*/
function create_our_team_post_type() {

    $labels = array(
        'name'               => _x( 'Our Team', 'Post type general name', 'textdomain' ),
        'singular_name'      => _x( 'Team Member', 'Post type singular name', 'textdomain' ),
        'menu_name'          => __( 'Our Team', 'textdomain' ),
        'add_new_item'       => __( 'Add New Member', 'textdomain' ),
        'edit_item'          => __( 'Edit Member', 'textdomain' ),
        'all_items'          => __( 'All Members', 'textdomain' ),
        'featured_image'     => __( 'Member Photo', 'textdomain' ),
        'set_featured_image' => __( 'Set member photo', 'textdomain' ),
    );

    $args = array(
        'labels'       => $labels,
        'public'       => true,
        'show_ui'      => true,
        'show_in_menu' => true,
        'menu_icon'    => 'dashicons-groups',
        'rewrite'      => array( 'slug' => 'our-team' ),
        'has_archive'  => true,
        'supports'     => array( 'title', 'editor', 'thumbnail' ),
    );

    register_post_type( 'our_team', $args );
}
add_action( 'init', 'create_our_team_post_type' );


/*========================================
= Designation Meta Box                   =
========================================*/
function add_team_designation_metabox() {
    add_meta_box(
        'team_designation',
        'Designation',
        'team_designation_callback',
        'our_team',
        'normal',
        'high'
    );
}
add_action( 'add_meta_boxes', 'add_team_designation_metabox' );

function team_designation_callback( $post ) {
    wp_nonce_field( 'team_designation_nonce', 'team_designation_nonce' );
    $designation = get_post_meta( $post->ID, '_team_designation', true );
    ?>
    <input type="text"
           name="team_designation"
           value="<?php echo esc_attr( $designation ); ?>"
           style="width:100%; padding:8px;"
           placeholder="Enter Designation (e.g. CEO, Developer)">
    <?php
}

function save_team_designation_metabox( $post_id ) {
    if ( ! isset( $_POST['team_designation_nonce'] ) ) return;
    if ( ! wp_verify_nonce( $_POST['team_designation_nonce'], 'team_designation_nonce' ) ) return;
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;

    if ( isset( $_POST['team_designation'] ) ) {
        update_post_meta(
            $post_id,
            '_team_designation',
            sanitize_text_field( $_POST['team_designation'] )
        );
    }
}
add_action( 'save_post', 'save_team_designation_metabox' );


/*========================================
= Enqueue Slick Slider CSS & JS          =
========================================*/
function enqueue_team_slider_assets() {

    wp_enqueue_style( 'slick-css', 'https://cdn.jsdelivr.net/npm/slick-carousel@1.8.1/slick/slick.css' );
    wp_enqueue_style( 'slick-theme-css', 'https://cdn.jsdelivr.net/npm/slick-carousel@1.8.1/slick/slick-theme.css' );

    wp_enqueue_script( 'slick-js', 'https://cdn.jsdelivr.net/npm/slick-carousel@1.8.1/slick/slick.min.js', array('jquery'), '1.8.1', true );
}
add_action( 'wp_enqueue_scripts', 'enqueue_team_slider_assets' );


/*========================================
= Our Team Slider Shortcode              =
========================================*/
function our_team_slider_shortcode() {

    $query = new WP_Query( array(
        'post_type'      => 'our_team',
        'posts_per_page' => -1,
        'post_status'    => 'publish',
    ) );

    if ( ! $query->have_posts() ) {
        return '<p>No team members found.</p>';
    }

    ob_start();
    $counter = 1;
    ?>

    <div class="team-slider">
        <?php while ( $query->have_posts() ) : $query->the_post(); 
            $designation = get_post_meta( get_the_ID(), '_team_designation', true );
        ?>
            <div class="team-slide">
                <div class="team-card">

                    <?php if ( has_post_thumbnail() ) : ?>
                        <div class="team-image">
                            <?php the_post_thumbnail( 'full' ); ?>
                        </div>
                    <?php endif; ?>

                    <div class="team-content">

                      

                        <h4 class="team-title"><?php the_title(); ?></h4>

                        <?php if ( $designation ) : ?>
                            <span class="team-designation">
								<p> <?php echo esc_html( $designation ); ?></p>
                            </span>
                        <?php endif; ?>

                        <div class="team-description">
                            <?php the_content(); ?>
                        </div>

                    </div>
                </div>
            </div>
        <?php 
            $counter++;
        endwhile; ?>
    </div>

    <script>
    jQuery(document).ready(function($){
        $('.team-slider').slick({
            slidesToShow: 3,
            slidesToScroll: 1,
            arrows: false,
            dots: false,
            autoplay: false,
           
        
          
            responsive: [
                { 
                    breakpoint: 1024, 
                    settings: { centerPadding: '30%' } 
                },
                { 
                    breakpoint: 768,  
                    settings: { centerPadding: '15%' } 
                }
            ]
        });
    });
    </script>

    <?php
    wp_reset_postdata();
    return ob_get_clean();
}
add_shortcode( 'our_team_slider', 'our_team_slider_shortcode' );
SELECT
		 "Import items"."SKU" as "Imported SKU",
		 "Items"."Item ID" as "ID",
		 "Items"."Item Name" as "Item Name",
		 "Items"."Status" as "Status",
		 "Test"."Stock on Hand" as "Stock on Hand"
FROM  "Import items"
LEFT JOIN "Items" ON "Items"."SKU"  = "Import items"."SKU" 
LEFT JOIN "Test" ON "Test"."Product ID"  = "Items"."Item ID"  
<!DOCTYPE html>

<html>

<head>

 <link rel="stylesheet" href="https://pyscript.net/releases/2024.1.1/core.css" />

 <script type="module" src="https://pyscript.net/releases/2024.1.1/core.js"></script>

</head>

<body>

 <div id="output"></div>

 <script type="py">

 from pyscript import display

 display("Hello World", target="output")

 </script>

</body>

</html>
lscpu | grep "Model name"
cat /proc/cpuinfo | grep -m1 "model name"
    // 3. side nav link tracking
    function sideNavTracking() {
        const sideNavLinks = document.querySelectorAll('nav.lhs-menu a');
        if (!sideNavLinks.length) return; // fixed
    
        sideNavLinks.forEach(link => {
            link.addEventListener('click', function(e) { // pass e
                maybePreventDefault(e);
    
                // Get only text nodes (exclude SVG)
                const linkTextRaw = Array.from(link.childNodes)
                    .filter(node => node.nodeType === Node.TEXT_NODE)
                    .map(node => node.textContent.trim())
                    .join(' ');
                
                const linkText = linkTextRaw.replace(/\s+/g, ' ').trim() || "";
                const linkUrl = link.getAttribute('href') || "";
    
                let navLevel = 1;
                if(linkText && linkUrl){
                    gtmPush({
                    event: 'navigation_click',
                    navigation_type: 'side_nav',
                    click_text: linkText,
                    click_url: getNormalisedUrl(linkUrl),
                    nav_level: navLevel,
                    }); 
                }
               
            });
        });
    }
    // 6. hero banner tracking
   function heroTracking() {
       
        const heroBanner = document.querySelector('.new-hero');
        if (!heroBanner) return;
    
        const link = heroBanner.querySelector('.cta');
        if (!link) return;
    
        link.addEventListener('click', function () {
            // Skip if already tracked
            if (link.dataset.bannerTracked) return;
    
            const linkTextRaw = link.textContent?.trim() || "";
            const linkText = linkTextRaw.replace(/\s+/g, " ").trim();
            const linkUrl = link.getAttribute("href") || "";
    
            if(linkText && linkUrl){
                gtmPush({
                event: "interaction_click",
                component_name: "banner",
                click_text: linkText,
                click_url: getNormalisedUrl(linkUrl),
                });
            }
    		// set to true once clicked so now marked as tracked
            link.dataset.bannerTracked = 'true';
        });
        
    } // close function
    // 6. hero banner tracking
   function heroTracking() {
       
        const heroBanner = document.querySelector('.new-hero');
        if (!heroBanner) return;
    
        const link = heroBanner.querySelector('.cta');
        if (!link) return;
    
        link.addEventListener('click', function () {
            // Skip if already tracked
            if (link.dataset.bannerTracked) return;
    
            const linkTextRaw = link.textContent?.trim() || "";
            const linkText = linkTextRaw.replace(/\s+/g, " ").trim();
            const linkUrl = link.getAttribute("href") || "";
    
            if(linkText && linkUrl){
                gtmPush({
                event: "interaction_click",
                component_name: "banner",
                click_text: linkText,
                click_url: getNormalisedUrl(linkUrl),
                });
            }
    		// set to true once clicked so now marked as tracked
            link.dataset.bannerTracked = 'true';
        });
        
    } // close function
Solution_Details = zoho.crm.getRecordById("Solutions",solution_id);
info "Solution_Details : " + Solution_Details;
if(Solution_Details.get("status") != "failure")
{
	Solution_ID = Solution_Details.get("id");
	info "Solution_ID : " + Solution_ID;
	Lead_URL = "https://crm.zoho.com/crm/org883428182/tab/Solutions/" + Solution_ID;
	slack_url = "https://hooks.slack.com/services/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";
	messageMap = Map();
	messageMap.put("text","AI Readliness Assessment Completed. <" + Lead_URL + "|View AI Readliness Assessment>");
	response = invokeurl
	[
		url :slack_url
		type :POST
		parameters:messageMap.toString()
	];
	info response;
}
<?php

namespace App\Helpers;

use Config;
use Str;

class Encryptor
{

    public static function method()
    {
        return Config::get('app.cipher');
    }

    public static function hash_key()
    {
        return hash('sha256', Str::substr(Config::get('app.key'), 7));
    }

    public static function iv()
    {
        $secret_iv = Str::substr(Config::get('app.key'), 7);
        $iv = substr(hash('sha256', $secret_iv), 0, 16);

        return $iv;
    }

    public static function encrypt($value)
    {
        $output = openssl_encrypt($value, self::method(), self::hash_key(), 0, self::iv());
        $output = base64_encode($output);

        return $output;
    }

    public static function decrypt($value)
    {
        $output = openssl_decrypt(base64_decode($value), self::method(), self::hash_key(), 0, self::iv());
        return $output;
    }
}
 // Usar jQuery para hacer la solicitud
                ruta = "{{ url('eliminar-pdf') }}/"+archivoId;
                $.get(ruta, function(response){
                    if (response.status === 'success') {
                        // Eliminar el elemento del DOM
                        if (archivoElement) {
                            archivoElement.remove();
                        }

                        // Mostrar mensaje de éxito
                        showNotification(response.message || 'Archivo eliminado correctamente', 'success');

                        // Verificar si quedan archivos
                        const container = document.getElementById(`archivos-${tipoDocumentoId}`);
                        if (container && container.children.length === 0) {
                            container.innerHTML = '<div class="text-muted small">No hay archivos cargados.</div>';
                        }
                    } else {
                        // Restaurar elemento
                        if (archivoElement) {
                            archivoElement.innerHTML = originalContent;
                            archivoElement.style.animation = 'shake 0.5s';
                        }
                        showNotification(response.message || 'Error al eliminar el archivo', 'error');
                    }


                }, 'json').fail(function (xhr, status, error){
                    console.error('Error:', error);
                    // Restaurar elemento
                    if (archivoElement) {
                        archivoElement.innerHTML = originalContent;
                    }
                    showNotification('Error de conexión al eliminar el archivo', 'error');
                });
---
name: asistentecodigo
description: Asistente para refactorizar código
argument-hint: "Ruta del archivo php o descripción de la tarea de refactorización"
model: Gemini 3 Flash Preview (gemini)
tools: ['read', 'edit', 'execute', 'search']
---
Eres un experto en refactorización de código php. Tu objetivo es mejorar código existente manteniendo su funcionalidad.

Proceso a seguir:
1. Primero, lee el archivo indicado y analiza su estructura
2. Identifica oportunidades de mejora:
  - Simplificar lógica compleja
  - Mejorar nombres de variables/funciones
  - Eliminar código duplicado
  - Añadir type hints donde sea útil
3. Propón los cambios antes de implementarlos
4. Si es necesario, ejecuta el código para verificar que funciona
5. Aplica las mejoras paso a paso
6. Verifica que todo sigue funcionando
7. Asegura que el código cumpla con los estándares de codificación PSR-12
8. Busca optimizaciones específicas de Laravel si es necesario(uso de Eloquent, Service Container, etc.)
9. Documenta los métodos y clases utilizando PHPDoc
Reglas importantes:
- Nunca elimines funcionalidad sin confirmar
- Mantén los tests existentes funcionando
- Comenta los cambios significativos
function listFilesWithViewLinks() {
  const folderId = '1uYwFRCngsbdj2T7GKtFR8b5YHw_71IEY'; // Replace with your actual folder ID
  const folder = DriveApp.getFolderById(folderId);
  const files = folder.getFiles();
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  sheet.getRange("A1:B").clearContent(); // Clear only content, keep formatting if any
  sheet.getRange("A1").setValue("File Name");
  sheet.getRange("B1").setValue("View Link");

  let row = 2;
  while (files.hasNext()) {
    const file = files.next();
    const name = file.getName();
    const id = file.getId();
    const viewLink = `https://drive.google.com/file/d/${id}/view?usp=sharing`;

    sheet.getRange(row, 1).setValue(name);
    sheet.getRange(row, 2).setValue(viewLink);
    row++;
  }
}
CREATE OR ALTER FUNCTION ALL_MATCHING(
    TEXTO_ORIGINAL VARCHAR(1000),
    CADENA_BUSQUEDA VARCHAR(1000))
RETURNS BOOLEAN
AS
DECLARE VARIABLE palabra VARCHAR(100);
DECLARE VARIABLE pos INTEGER;
DECLARE VARIABLE encontrado BOOLEAN;
BEGIN
    -- Si la cadena de búsqueda está vacía, retornar verdadero
    IF (CADENA_BUSQUEDA IS NULL OR CADENA_BUSQUEDA = '') THEN
        RETURN TRUE;
    
    -- Convertir a mayúsculas para búsqueda insensible a mayúsculas/minúsculas
    TEXTO_ORIGINAL = UPPER(TEXTO_ORIGINAL);
    CADENA_BUSQUEDA = UPPER(TRIM(CADENA_BUSQUEDA));
    
    -- Si el texto original está vacío
    IF (TEXTO_ORIGINAL IS NULL OR TEXTO_ORIGINAL = '') THEN
        RETURN FALSE;
    
    -- Dividir la cadena de búsqueda en palabras y verificar cada una
    WHILE (CADENA_BUSQUEDA != '') DO
    BEGIN
        -- Extraer la siguiente palabra (separada por espacio)
        pos = POSITION(' ', CADENA_BUSQUEDA);
        IF (pos = 0) THEN
        BEGIN
            palabra = CADENA_BUSQUEDA;
            CADENA_BUSQUEDA = '';
        END
        ELSE
        BEGIN
            palabra = SUBSTRING(CADENA_BUSQUEDA FROM 1 FOR pos - 1);
            CADENA_BUSQUEDA = SUBSTRING(CADENA_BUSQUEDA FROM pos + 1);
        END
        
        -- Eliminar espacios adicionales
        palabra = TRIM(palabra);
        
        -- Si la palabra no está vacía, verificar si existe en el texto
        IF (palabra != '') THEN
        BEGIN
            encontrado = FALSE;
            
            -- Buscar la palabra como subcadena en el texto original
            IF (POSITION(palabra IN TEXTO_ORIGINAL) > 0) THEN
                encontrado = TRUE;
            
            -- Si una palabra no se encuentra, retornar falso
            IF (NOT encontrado) THEN
                RETURN FALSE;
        END
    END
    
    -- Si todas las palabras fueron encontradas
    RETURN TRUE;
END
(
    mw_dataset.withColumn("partition_id", sf.spark_partition_id())
              .groupBy("partition_id")
              .agg(sf.count(sf.col("partition_id")).alias("partition_count"))
              .orderBy(sf.desc(sf.col("partition_count")))
              .show()
)
CMD als Admin ausführen

Anzeigen ob Recall läuft:
dism /Online /Get-Featureinfo /Featurename:Recall

Recall deaktivieren:
dism /Online /Disable-Feature /Featurename:Recall
Query_Map = {"sort_order":"desc","sort_by":"Modified_Time"};
attachments = zoho.crm.getRelatedRecords("Attachments",moduleAPI,RS_ID,1,200,Query_Map);
{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":star: Xero Boost Days! :star:"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "Please see below for what's on this week!Hope you all had a wonderful weekend"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":calendar-date-16: Monday, 16th February",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "\n:coffee: *Café Partnership*: Enjoy free coffee and café-style beverages from our Cafe partner *Industry Beans*.\n:Lunch::burrito:*Mexican*: from *12pm* in the kitchen. Menu in the :thread:"
			}
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":calendar-date-18: Wednesday, 18th February",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":coffee: *Café Partnership*: Enjoy free coffee and café-style beverages from our Cafe partner *Industry Beans*.\n:eggs: *Morning tea*:from *9am* in the kitchen!"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "Stay tuned to this channel for more details, check out the <https://calendar.google.com/calendar/u/0?cid=Y19uY2M4cDN1NDRsdTdhczE0MDhvYjZhNnRjb0Bncm91cC5jYWxlbmRhci5nb29nbGUuY29t|*Brisbane Social Calendar*>, and get ready to Boost your workdays!\n\nLove,\nWX Team :party-wx:"
			}
		}
	]
}
Launch your own Airbnb-style rental marketplace with our ready-made Airbnb CLone Script. Includes web & mobile apps, host and guest dashboards, secure payments, booking management, and full admin control. Start earning from commissions today.

Free demo available to explore all features before you decide.
// Pin Definitions
const int ldrPin = A0;      // Light Dependent Resistor
const int potPin = A1;      // Potentiometer for sensitivity
const int relayPin = 8;     // Relay Control Pin

void setup() {
  pinMode(relayPin, OUTPUT);
}

void loop() {
  // Read the sensors (0 - 1023)
  int lightLevel = analogRead(ldrPin);
  int threshold = analogRead(potPin);

   // Logic: If light is lower than threshold, turn on relay
  if (lightLevel < threshold) {
    digitalWrite(relayPin, HIGH); // Relay ON
  } else {
    digitalWrite(relayPin, LOW);  // Relay OFF
  }

  delay(100); // Small stability delay
}
// Pin Definitions
const int ldrPin = A0;      // Light Dependent Resistor
const int potPin = A1;      // Potentiometer for sensitivity
const int relayPin = 8;     // Relay Control Pin

void setup() {
  pinMode(relayPin, OUTPUT);
}

void loop() {
  // Read the sensors (0 - 1023)
  int lightLevel = analogRead(ldrPin);
  int threshold = analogRead(potPin);

   // Logic: If light is lower than threshold, turn on relay
  if (lightLevel < threshold) {
    digitalWrite(relayPin, HIGH); // Relay ON
  } else {
    digitalWrite(relayPin, LOW);  // Relay OFF
  }

  delay(100); // Small stability delay
}
[data-block-id="cml096dhw01x53j7g5f8nmgl9"] .carousel[style*="--carousel-active-index: 0"]
.block-process-card__description p:nth-of-type(2) {
background-color: #cbedfd !important;
padding: 2rem;
}
[data-block-id="cml096dhw01x53j7g5f8nmgl9"]
    .block-process-carousel .block-process-card .block-process-card__description .fr-view.rise-tiptap p:nth-of-type(2) {
      background-color: #cbedfd !important;
            padding: 2rem !important;
    }
[data-block-id="cml01a1xh00ay3j7ggklykyu0"] .blocks-tabs__content-item
    .blocks-tabs__description .fr-view.rise-tiptap p:nth-of-type(4){
      background-color: #cbedfd !important;
    padding: 2rem;
    }

    [data-block-id="cml01a1xh00ay3j7ggklykyu0"] .blocks-tabs__content-item
    .blocks-tabs__description .fr-view.rise-tiptap p:nth-of-type(9){
      background-color: #cbedfd !important;
    padding: 2rem;
    }
[data-block-id="cml01a1xh00ay3j7ggklykyu0"] .blocks-tabs__content-item:last-child
    .blocks-tabs__description .fr-view.rise-tiptap {
    background-color: #cbedfd !important;
    padding: 2rem;
    }
[data-block-id="cml01a1xh00ay3j7ggklykyu0"] .blocks-tabs__content-item
      .blocks-tabs__description .fr-view.rise-tiptap p:nth-of-type(4){
        background-color: #cbedfd !important;
      padding: 2rem;
      }

      [data-block-id="cml01a1xh00ay3j7ggklykyu0"] .blocks-tabs__content-item
      .blocks-tabs__description .fr-view.rise-tiptap p:nth-of-type(9){
        background-color: #cbedfd !important;
      padding: 2rem;
      }
/*========================================================
  Rise 360 compulsory CSS
  For use in all Digital Learning and Development Rise 360 courses.
  Version 1.0
  Last updated 04/11/2024
==========================================================*/

/*Global variables – edit these variables to suit your course design.
==========================================================*/

:root {
  --custom-theme-colour-button-hover-opacity: .9; /*This sets the opacity of buttons and checkboxes that use the theme colour, such as continue buttons.Lower value equals ligher hover colour.*/
  --custom-carousel-prev-next-hover-colour: #000; /*This sets the hover state colour of the previous and next buttons on the quote carousel and image carousel blocks.*/
}

/*Global CSS edits
==========================================================*/

/*Links > Hover state: Add a background colour and border.*/
.brand--linkColor a:hover {
  outline: solid 3px rgba(0, 0, 0, .1); /*Using transparancy prevents surrounding text, such as full stops, from vanishing.*/
  background-color: rgba(0, 0, 0, .1) !important;
}

/*Cover page
==========================================================*/

/*Cover page > Start module button: Remove all caps, increase font size, decrease font weight, adjust padding.*/
.cover__header-content-action-link-text{
  text-transform: none;
  font-size: 1.5rem;
  font-weight: 700;
  letter-spacing: .1rem;
}
.cover__header-content-action-link {
  padding: 0.8rem 2.9rem !important;
}

/*Cover page > body text: Increase font size and change colour.*/ 
.cover__details-content-description.brand--linkColor {
  color: #000;
  font-size: 1.7rem;
}

/*Cover page > Section titles: Increase font size, remove all caps, darken border line.*/
.overview-list__section-title {
  border-bottom: .1rem solid #717376; /*Colour of the lesson icons.*/
  font-size: 1.4rem;
  text-transform: none;
}

/*Cover page > lesson list: Increase font size.*/
.overview-list-item__title {
  font-size: 1.4rem;
}

/*Navigation menu
==========================================================*/

/*Navigation menu > % progress indicator: Remove all caps, increase font size.*/
.nav-sidebar-header__progress-text {
  text-transform: none !important;
  font-size: 1.4rem !important;
}

/*Navigation menu > Section titles: Remove all caps, increase font size.*/
.nav-sidebar__outline-section-toggle-text {
  text-transform: none;
  font-size: 1.4rem;
}
.nav-sidebar__outline-section-toggle:after {
  border-bottom: 1px solid #717376 !important;
}

/*Navigation menu > Lesson titles: Increase font size.*/
.nav-sidebar__outline-section-item__link {
  font-size: 1.4rem !important;
}

/*Lesson header
==========================================================*/

/*Lesson header > Lesson counter: Increase font size, remove italics.*/
.lesson-header__counter {
  font-size: 1.4rem;
  font-style: normal;
  margin-bottom: 1.3rem !important;
}

/*Text blocks
==========================================================*/

/*Paragraph
----------------------------------------------------------*/

/*Paragraph with heading
----------------------------------------------------------*/

/*Paragraph with subheading
----------------------------------------------------------*/

/*Heading
----------------------------------------------------------*/

/*Subheading
----------------------------------------------------------*/

/*Columns
----------------------------------------------------------*/

/*Table
----------------------------------------------------------*/


/*Statement blocks
==========================================================*/

/*Statement A
----------------------------------------------------------*/

/*Statement B
----------------------------------------------------------*/

/*Statement C
----------------------------------------------------------*/

/*Statement D
----------------------------------------------------------*/

/*Note
----------------------------------------------------------*/


/*Quote blocks
==========================================================*/

/*Quote A
----------------------------------------------------------*/

/*Quote B
----------------------------------------------------------*/

/*Quote C
----------------------------------------------------------*/

/*Quote D
----------------------------------------------------------*/

/*Quote on image
----------------------------------------------------------*/

/*Quote carousel
----------------------------------------------------------*/

/*Quote carousel > Progression circles and arrows: Change arrow hover colour, change progression cirle hover opacity and scale.*/
.block-quote--carousel .carousel-controls-next,
.block-quote--carousel .carousel-controls-prev {
  transition: color 0.3s;
}
.block-quote--carousel .carousel-controls-next:hover,
.block-quote--carousel .carousel-controls-prev:hover {
  color: var(--custom-carousel-prev-next-hover-colour); 
}
.carousel-controls-item-btn {
  transition: all 0.15s ease-in-out;
}
.carousel-controls-item-btn:hover {
  opacity: var(--custom-theme-colour-button-hover-opacity);
  color: var(--custom-theme-hover-bg, #202d60);
}


/*List blocks
==========================================================*/

/*Numbered list
----------------------------------------------------------*/

/*Checkbox list
----------------------------------------------------------*/

/*Checkbox list > Checkboxes: Move the checkboxes to the front and change the hover colour.*/
.block-list__checkbox {
  z-index: 2;
  transition: all .15s ease-in-out;
}
.block-list__checkbox:hover {
  background-color: var(--color-theme-decorative);
  opacity: var(--custom-theme-colour-button-hover-opacity);
}

/*Bulleted list
----------------------------------------------------------*/


/*Image blocks
==========================================================*/

/*Image blocks > Caption: Increase font size. This can be changed by manually adjusting the font size in Rise.*/
.block-image__caption, .block-gallery__caption {
  font-size: 1.4rem !important;
}

/*Image centered
----------------------------------------------------------*/

/*Image full width
----------------------------------------------------------*/

/*Image & text
----------------------------------------------------------*/

/*Text on image
----------------------------------------------------------*/


/*Gallery blocks
==========================================================*/

/*Carousel
----------------------------------------------------------*/

/*Carousel > Progression circles and arrows: Change arrow hover colour, change progression cirle hover opacity and scale.*/
.block-gallery-carousel__container .carousel-controls-next,
.block-gallery-carousel__container .carousel-controls-prev {
  transition: color 0.3s;
}
.block-gallery-carousel__container .carousel-controls-next:hover,
.block-gallery-carousel__container .carousel-controls-prev:hover {
  color: var(--custom-carousel-prev-next-hover-colour);
}
/*Note that the hover state of the progression circles is modified in the Quote carousel section.*/

/*Two column grid
----------------------------------------------------------*/

/*Three column grid
----------------------------------------------------------*/

/*Four column grid
----------------------------------------------------------*/


/*Multimedia blocks
==========================================================*/

/*Audio
----------------------------------------------------------*/

/*Audio > Play/puase button and scrub slider: Increase size and gap between. Change hover scale.*/
.audio-player__play {
  margin-right: 1.6rem;
}
.audio-player__play .svg-inline--fa {
  height: 1.7rem;
  transition: all 0.15s ease-in-out;
}
.audio-player__play .svg-inline--fa:hover {
  transform: scale(1.2);
}
.audio-player__tracker-handle{
  height: 100%;
}
.audio-player__tracker-handle-icon>svg {
  height: 1.5rem;
  width: 1.5rem;
}
.audio-player__tracker-handle-icon{
  transition: all 0.15s ease-in-out;
}
.audio-player__tracker-handle-icon:hover {
  transform: scale(1.2);
}
.audio-player__tracker-handle-icon:active {
  transform: scale(1.2);
}

/*Audio > track line: Make line thicker.*/
.audio-player__tracker-bar {
  border-top: .16rem solid var(--color-track);
}
.audio-player__tracker:after {
  border-top: .16rem solid var(--color-runner);
}

/*Audio > Timer: Increase font size.*/
.audio-player__timer {
  font-size: 1.2rem;
}

/*Audio > Caption: Increase font size. This can be changed by manually adjusting the font size in Rise.*/
.block-audio__caption {
  font-size: 1.4rem;
}

/*Video
----------------------------------------------------------*/

/*Video > Caption: Change font size to 14px.*/
.block-video__caption {
  font-size: 1.4rem;
}

/*Embed
----------------------------------------------------------*/

/*Attachement
----------------------------------------------------------*/

/*Attachement: Add hover colour.*/
.block-attachment:hover {
  background: #ebebeb;
}

/*Code snippet
----------------------------------------------------------*/

/*Code snippet > Caption: Increase font size.*/
.block-text__code-caption p {
  font-size: 1.4rem;
}

/*Interactive blocks
==========================================================*/

/*Accordion
----------------------------------------------------------*/

/*Tabs
----------------------------------------------------------*/

/*Tabs > Titles: Remove all caps, increase font size and reduce letter spacing.*/
.blocks-tabs__header-item{
  text-transform: none;
  font-size: 1.5rem;
  letter-spacing: .04rem;
}

/*Labeled graphic
----------------------------------------------------------*/

/*Labeled graphic > pop-up text: Set font size. This can be changed by manually adjusting the font size in Rise.*/
.bubble__content {
  font-size: 1.6rem;
}

/*Process
----------------------------------------------------------*/

/*Process > Navigation arrows: Change hover state opacity.*/
.process-arrow {
  transition: opacity .3s !important;
}
.process-arrow:hover {
  opacity: .8;
}

/*Process > Start button: Change focus state outline.*/
.process-card__start:focus, .process-card-mobile__start:focus {
  outline-offset: 0.4rem;
}

/*Process > Start button: Change hover state opacity.*/
.process-card__start:hover {
  opacity: var(--custom-theme-colour-button-hover-opacity);
}

/*Process > Start button: Remove all caps, increase font size and letter spacing.*/
.process-card__start-text, .process-card-mobile__start-text  {
  text-transform: none;
  font-size: 1.5rem;
  letter-spacing: .1rem;
}

.block-process-card__start-btn {
  text-transform: none;
  font-size: 1.5rem;
  letter-spacing: .1rem;}


.process-card__start-icon {
  height: 1.3rem !important;
  width: 1.3rem !important;
}

/*Process > Start again: Remove all caps, increase font size and letter spacing.*/
.process-card__restart, .process-card-mobile__restart {
  text-transform: none;
  font-size: 1.5rem;
  letter-spacing: .1rem;
  font-weight: 700;
}
  
/*Process > Start again: Add hover state.*/
.process-card__restart {
  transition: background-color 0.3s;
  border-radius: 5px;
}
.process-card__restart:hover {
  background-color: #ebebeb;
}

/*Scenario
----------------------------------------------------------*/

/*Scenario block > Continue buttons, Start over buttons: Remove all caps, increase font size and letter spacing.*/
.scenario-block__text__continue {
  line-height: 2rem;
}
.scenario-block__text__continue, .scenario-block__dialogue__button, .scenario-block__text__end span {
  text-transform: none;
  font-size: 1.5rem;
  letter-spacing: .1rem;
}

/*Scenario block > Response: Increase font size.*/
.scenario-block__response .fr-view {
    font-size: 1.6rem;
}

/*Scenario block > Response: Change hover colour.*/
.scenario-block__response__inner:hover {
  background-color: #ebebeb;
}
  
/*Scenario > Continue buttons: Change hover opacity.*/
.scenario-block__text__continue:hover {
  opacity: var(--custom-theme-colour-button-hover-opacity);
}
  
/*Scenario > Continue buttons: Change focus state outline.*/
.scenario-block__text__continue:focus {
  outline-offset: 0.4rem;
}
  
/*Scenario > Response buttons: Change hover state.*/
.scenario-block__dialogue__button {
  transition: all .3s;
}
.scenario-block__dialogue__button:hover {
  background-color: #ebebeb;
  transform: translateX(1rem);
}
  
/*Scenario > Start over: Change hover state.*/
.scenario-block__text__end {
  transition: all .3s;
  color: var(--color-theme-decorative);
  padding: 1rem;
  margin-top: 1rem;
}
.scenario-block__text__end:hover {
  background-color: #ebebeb;
  border-radius: 5px;
}


/*Sorting activity
----------------------------------------------------------*/

/*Sorting activity > Restart button: Remove all caps, change font size, colour and letter spacing.*/
.block-sorting-activity .restart-button__content {
  color: var(--color-theme-decorative);
  border-radius: 5px;
  text-transform: none;
  font-size: 1.5rem;
  letter-spacing: .1rem;
  font-weight: 700;
}

/*Sorting activity > Restart button: Add a hover state.*/
.block-sorting-activity .deck__title {
  margin-bottom: 1rem;  
  padding-bottom: .6rem;
  border-bottom: .1rem solid rgba(0, 0, 0, .2);
}
.block-sorting-activity .restart-button {
  margin-top: 0rem;
  border: none;
  padding: 1rem;
  border-radius: 5px;
  min-height: 7.45rem;
}
.block-sorting-activity .restart-button {
  transition: background-color 0.3s;
}
.block-sorting-activity .restart-button:hover {
  background-color: #ebebeb;
}


/*Timeline
----------------------------------------------------------*/

/*Flashcard grid
----------------------------------------------------------*/

/*Flashbard stack
----------------------------------------------------------*/

/*Flashcard stack > Previous and Next button: Change hover state.*/
.block-flashcards-slider__arrow--next, .block-flashcards-slider__arrow--prev {
  transition: opacity .3s;
}
.block-flashcards-slider__arrow--next:hover, .block-flashcards-slider__arrow--prev:hover {
  opacity: var(--custom-theme-colour-button-hover-opacity);
}

/*Flashcard stack > Slide counter: Remove italics.*/
.block-flashcards-slider__progress-text {
  font-style: normal;
}

/*Flashcard stack > Progress line: Increase thickness.*/
.block-flashcards-slider__progress-line {
  border-bottom: max(.2rem, 2px) solid var(--color-progress-track);
  position: relative;
}
.block-flashcards-slider__progress-runner {
  border-bottom: max(.2rem, 2px) solid var(--color-theme-decorative);
}

/*Button
----------------------------------------------------------*/

/*Button and Button stack > Button: Remove all caps, increase font size and line height.*/
.blocks-button__button {
  transition: all .3s;
  text-transform: none;
  font-size: 1.5rem;
  line-height: 3.9rem;
}

/*Button and Button stack > Button: Change hover state.*/
.blocks-button__button:hover {
  opacity: var(--custom-theme-colour-button-hover-opacity);
}

/*Button and Button stack > Button: Offset the focus state outline.*/
.blocks-button__button:focus {
  outline-offset: .4rem;
}

/*Button stack
----------------------------------------------------------*/

/*Storyline
----------------------------------------------------------*/


/*Knowledge check blocks AND Quiz lesson
==========================================================*/

/*Knowledge check/Quiz > Options: remove extra space between question options and submit button/feedback box.*/
.block-knowledge .quiz-card__interactive {
  margin-bottom: 3rem;
}

/*Knowledge check/Quiz > Submit/Next buttons: Remove all caps and increase font size.*/
.quiz-card__button{
  transition: opacity .3s;
  text-transform: none;
  font-size: 1.5rem;
}
  
/*Knowledge check/Quiz > Submit/Next buttons: Change hover state.*/
.quiz-card__button:hover {
  opacity: var(--custom-theme-colour-button-hover-opacity);
}
  
/*Knowledge check/Quiz > Submit/Next buttons: Offset the focus state outline.*/
.quiz-card__button:focus {
  outline-offset: 0.4rem;
}

/*Knowledge check/Quiz > 'Correct/Incorrect' label: Increase font size.*/
.quiz-card__feedback-label {
  font-size: 1.4rem;
}

/*Knowledge check/Quiz > Feedback body text: Increase font size, align left and ensure color is black. */
.quiz-card__feedback-text {
  font-size: 1.6rem;
  text-align: left;
  color: #000;
}

/*Knowledge check > Try again button: Remove all caps, increase font size and change to theme colour. Note that the Rise 360 label text must also be lowercase.*/
.block-knowledge__retake-text {
  text-transform: none;
  font-size: 1.4rem;
}
.block-knowledge__retake {
  color: var(--color-theme-decorative)
}

/*Knowledge check > Try again button: Change hover state.*/
.block-knowledge__retake-content {
  transition: background-color 0.3s;
  border-radius: 5px;
  padding: 1rem;
  margin: -1rem /*Negative margin pushes the margin out into the padding area to create a larger hover state without having to change the padding for the normal state.*/
}
.block-knowledge__retake-content:hover {
  background-color: #ebebeb;
}

/*Multiple choice
----------------------------------------------------------*/

/*Multiple response
----------------------------------------------------------*/

/*Fill in the blank
----------------------------------------------------------*/

/*Fill in the blank > 'Acceptable responses' label: Increase font size and remove italics.*/
.quiz-fill__options {
  font-size: 1.4rem;
  font-style:normal;
}

/*Matching
----------------------------------------------------------*/

/*Matching: Increase font size to 16px.*/
.quiz-match__item-content {
  font-size: 1.5rem;
}

/*Quiz
----------------------------------------------------------*/

/*Quiz > 'Lesson X of Y' label: Increase font size, letter spacing and remove italics.*/
.quiz-header__counter {
  font-size: 1.4rem;
  font-style: normal;
  letter-spacing: .05rem;
}

/*Quiz > 'Start assessment' label: Remove all caps, increase font size, move icon to the left.*/
.quiz-header__start-quiz {
  transition: all .3s;
  text-transform: none;
  font-size: 1.5rem;
  border-radius: 5px;
  padding: 1rem;
  margin: -1rem;
}
.quiz-header__start-quiz [class*=icon-] {
  margin-left: .6rem;
}

/*Quiz > 'Start assessment' label: Add hover state.*/
.quiz-header__start-quiz:hover {
  background-color: #ebebeb;
}

/*Quiz > 'Question' label: Remove italics and increase font size.*/
.quiz-card__step-label {
  font-size: 1.4rem;
  font-style: normal;
  letter-spacing: .05rem;
  font-weight: 400;
}
@media (max-width: 47.9375em) {
  .quiz-card__counter {
    font-size: 2.2rem;
  }
}

/*Quiz > Quiz results odemeter: Increase font size on all elements.*/
.odometer__score-label, .odometer__passlabel, .odometer__passpercent  {
  font-size: 1.4rem;
  text-transform: none;
}

/*Quiz > Quiz results 'Try again' button: Remove all caps, change font colour, size, weight and letter spacing, adjust padding.*/
.quiz-results__footer .restart-button__content {
  transition: background-color 0.3s;
  color: var(--color-theme);
  text-transform: none;
  font-size: 1.5rem;
  font-weight: 700;
  letter-spacing: .1rem;
  padding: 1rem;
  margin: -1rem;
  border-radius: 5px;
}

/*Quiz > Quiz results 'Try again' button: Add hover state.*/
.quiz-results__footer .restart-button__content:hover {
  background-color: #ebebeb;
}


/*Draw from question bank
----------------------------------------------------------*/


/*Chart blocks
==========================================================*/

/*Bar chart
----------------------------------------------------------*/

/*Line chart
----------------------------------------------------------*/

/*Pie chart
----------------------------------------------------------*/


/*Divider blocks
==========================================================*/

/*Continue
----------------------------------------------------------*/
  
/*Continue: Change hover state.*/
.continue-btn {
  transition: opacity 0.3s;
}
.continue-btn:hover {
  opacity: var(--custom-theme-colour-button-hover-opacity);
}

/*Continue: Offset the focus state outline.*/
.continue-btn:focus {
  outline-offset: 0.4rem;
}

/*Divider
----------------------------------------------------------*/

/*Numbered divider
----------------------------------------------------------*/

/*Spacer
----------------------------------------------------------*/


/*CSS edits by firstname lastname on DD/MM/YYYY.*/

/*========================================================
  Optional CSS edits – Paste all optional CSS edits below this comment.
==========================================================*/


(function () {
    // Create console group for visibility
    function logEvent(event) {
      console.groupCollapsed(
        "%c📡 Tracking Fired:",
        "color: #4caf50; font-weight: bold;",
        event.event || "(no event name)"
      );
      console.log(event);
      console.groupEnd();
    }

    // Monitor every push to dataLayer
    var originalPush = window.dataLayer.push;
    window.dataLayer.push = function () {
      [].slice.call(arguments).forEach(logEvent);
      return originalPush.apply(window.dataLayer, arguments);
    };

    console.log("%cTracking Debugger Active", "color: orange; font-size: 14px;");
  })();
The history of atom started to spread by ancient Greek philosophers then re-invented and developed by John Dalton. Later, the atomic model was discovered by several scientists such as J. J. Thomson, Ernest Rutherford, and Niels Bohr. Then, the Quantum Atomic Model became the topic discussed by many scientists. 
string related_list.Populate_Sales_Tiers(Int Rec_ID)
{
Pages = {1,2,3,4,5,6,7,8,9,10};
Match_Found = false;
responseXML = "<record>";
count = 0;
for each  Page in Pages
{
	Sales_Tier_List = zoho.crm.getRecords("Sales_Tiers",Page,200);
	for each  rec in Sales_Tier_List
	{
		ST_Rec_Id = rec.get("id");
		rec_details = zoho.crm.getRecordById("Sales_Tiers",ST_Rec_Id);
		Sales_Entries = rec_details.get("Sales_Entries");
		if(Sales_Entries != null)
		{
			for each  data in Sales_Entries
			{
				Reservation_id = ifNull(ifNull(data.get("Reservation"),{"id":""}).get("id"),"");
				//info Reservation_id;
				if(Reservation_id == Rec_ID)
				{
					info "Inside if:";
					Tier_Month_and_Year = ifNull(rec.get("Tier_Month_and_Year"),"");
					Name = ifNull(rec.get("Name"),"");
					Tier = ifNull(rec.get("Tier"),"");
					Total_Sales_Value = ifNull(rec.get("Total_Sales_Value"),"");
					Tier_Record_Number = ifNull(rec.get("Tier_Record_Number"),"");
					Sales_Manager_Booked_Unit = ifNull(rec.get("Sales_Manager_Booked_Unit"),"");
					Incentive_Percentage = ifNull(rec.get("Incentive_Percentage"),"");
					info Sales_Manager_Booked_Unit;
					///////////////////////
					///////////////////////////
					responseXML = responseXML + "<row no='" + count + "'>";
					responseXML = responseXML + "<FL val='Sales Tier Name' link='true' url='https://crmsandbox.zoho.com/crm/newsandboxeck/tab/CustomModule55/" + ST_Rec_Id + "'>" + Name + "</FL>";
					responseXML = responseXML + "<FL val='Tier Month and Year' link='true' url=''>" + Tier_Month_and_Year + "</FL>";
					responseXML = responseXML + "<FL val='Incentive Percentage' link='true' url=''>" + Incentive_Percentage + "</FL>";
					responseXML = responseXML + "<FL val='Total Sales Value' link='true' url=''>" + Total_Sales_Value + "</FL>";
					responseXML = responseXML + "<FL val='Sales Manager Booked Unit' link='true' url=''>" + Sales_Manager_Booked_Unit + "</FL>";
					responseXML = responseXML + "<FL val='Tier Record Number' link='true' url=''>" + Tier_Record_Number + "</FL>";
					responseXML = responseXML + "</row>";
					count = count + 1;
				}
			}
		}
	}
}
responseXML = responseXML + "</record>";
return responseXML;
}
<!DOCTYPE html>
<html>
<head>
    <title>Hello World Program</title>
</head>
<body>

<script>
    // Using console.log()
    console.log("Hello World");

    // Using document.write()
    document.write("Hello World");

    // Using alert()
    alert("Hello World");
</script>

</body>
</html>
<!DOCTYPE html>
<html lang="en" ng-app="myApp">
<head>
    <meta charset="UTF-8">
    <title>AngularJS Form Validation</title>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js"></script>
    <style>
        .error { color: red; }
        input.ng-invalid.ng-touched { border-color: red; }
        input.ng-valid.ng-touched { border-color: green; }
    </style>
</head>
<body ng-controller="FormCtrl">

<h2>Registration Form</h2>

<form name="userForm" ng-submit="submitForm()" novalidate>

    <!-- Name -->
    <label>Name:</label><br>
    <input type="text" name="name"
           ng-model="user.name"
           required
           ng-minlength="3">
    <div class="error" ng-show="userForm.name.$touched && userForm.name.$invalid">
        <span ng-show="userForm.name.$error.required">Name is required.</span>
        <span ng-show="userForm.name.$error.minlength">Minimum 3 characters.</span>
    </div>
    <br><br>

    <!-- Email -->
    <label>Email:</label><br>
    <input type="email" name="email"
           ng-model="user.email"
           required>
    <div class="error" ng-show="userForm.email.$touched && userForm.email.$invalid">
        <span ng-show="userForm.email.$error.required">Email is required.</span>
        <span ng-show="userForm.email.$error.email">Invalid email format.</span>
    </div>
    <br><br>

    <!-- Password -->
    <label>Password:</label><br>
    <input type="password" name="password"
           ng-model="user.password"
           ng-minlength="6"
           required>
    <div class="error" ng-show="userForm.password.$touched && userForm.password.$invalid">
        <span ng-show="userForm.password.$error.required">Password is required.</span>
        <span ng-show="userForm.password.$error.minlength">Minimum 6 cha
add_action( 'wp_head', 'add_recaptcha_site_key' );

function add_recaptcha_site_key() {
    ?>
    <script src="https://www.google.com/recaptcha/api.js?render=YOUR_SITE_KEY_HERE"></script>
    <?php
}
function wc_varb_price_range( $wcv_price, $product ) {
 
    $prefix = sprintf('%s: ', __('From', 'wcvp_range'));
 
    $wcv_reg_min_price = $product->get_variation_regular_price( 'min', true );
    $wcv_min_sale_price    = $product->get_variation_sale_price( 'min', true );
    $wcv_max_price = $product->get_variation_price( 'max', true );
    $wcv_min_price = $product->get_variation_price( 'min', true );
 
    $wcv_price = ( $wcv_min_sale_price == $wcv_reg_min_price ) ?
        wc_price( $wcv_reg_min_price ) :
        '<del>' . wc_price( $wcv_reg_min_price ) . '</del>' . '<ins>' . wc_price( $wcv_min_sale_price ) . '</ins>';
 
    return ( $wcv_min_price == $wcv_max_price ) ?
        $wcv_price :
        sprintf('%s%s', $prefix, $wcv_price);
}
 
add_filter( 'woocommerce_variable_sale_price_html', 'wc_varb_price_range', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'wc_varb_price_range', 10, 2 );
export const parseCsvText = (text: string, delimiter: string) => {
  const normalized = text.replace(/^\uFEFF/, "");
  const rows: string[][] = [];
  let row: string[] = [];
  let field = "";
  let inQuotes = false;

  for (let i = 0; i < normalized.length; i += 1) {
    const char = normalized[i];

    if (char === '"') {
      if (inQuotes && normalized[i + 1] === '"') {
        field += '"';
        i += 1;
        continue;
      }
      inQuotes = !inQuotes;
      continue;
    }

    if (!inQuotes && char === delimiter) {
      row.push(field);
      field = "";
      continue;
    }

    if (!inQuotes && (char === "\n" || char === "\r")) {
      if (char === "\r" && normalized[i + 1] === "\n") {
        i += 1;
      }
      row.push(field);
      rows.push(row);
      row = [];
      field = "";
      continue;
    }

    field += char;
  }

  if (field.length > 0 || row.length > 0) {
    row.push(field);
    rows.push(row);
  }

  return rows;
};
<!DOCTYPE html>
<html lang="en" ng-app="myApp">
<head>
  <meta charset="UTF-8">
  <title>AngularJS Form Validation</title>

  <!-- AngularJS CDN -->
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js"></script>

  <style>
    body {
      font-family: Arial;
      margin: 40px;
    }
    input.ng-invalid.ng-touched, select.ng-invalid.ng-touched {
      border: 2px solid red;
    }
    input.ng-valid.ng-touched, select.ng-valid.ng-touched {
      border: 2px solid green;
    }
    .error {
      color: red;
      font-size: 14px;
    }
  </style>
</head>

<body ng-controller="FormController">

  <h2>Registration Form</h2>

  <form name="regForm" novalidate>

    <!-- Name -->
    <label>Name:</label><br>
    <input type="text" name="name" ng-model="user.name" required ng-minlength="3">
    <div class="error" ng-show="regForm.name.$touched && regForm.name.$invalid">
      Name is required (min 3 characters)
    </div>
    <br><br>

    <!-- Email -->
    <label>Email:</label><br>
    <input type="email" name="email" ng-model="user.email" required>
    <div class="error" ng-show="regForm.email.$touched && regForm.email.$invalid">
      Enter a valid email address
    </div>
    <br><br>

    <!-- Password -->
    <label>Password:</label><br>
    <input type="password" name="password" ng-model="user.password" required ng-minlength="6">
    <div class="error" ng-show="regForm.password.$touched && regForm.password.$invalid">
      Password must be at least 6 characters
    </div>
    <br><br>

    <!-- Age -->
    <label>Age:</label><br>
    <input type="number" name="age" ng-model="user.age" min="18" max="60" required>
    <div class="error" ng-show="regForm.age.$touched && regForm.age.$invalid">
      Age must be between 18 and 60
    </div>
    <br><br>

    <!-- Gender -->
    <label>Gender:</label><br>
    <input type="radio" ng-model="user.gender" value="Male" required> Male
    <input type="radio" ng-model="user.gender" value="Female"> Female
    <br><br>

    <!-- Country -->
    <label>Country:</label><br>
    <select name="country" ng-model="user.country" required>
      <option value="">--Select--</option>
      <option>India</option>
      <option>USA</option>
      <option>UK</option>
    </select>
    <div class="error" ng-show="regForm.country.$touched && regForm.country.$invalid">
      Please select a country
    </div>
    <br><br>

    <!-- Terms -->
    <label>
      <input type="checkbox" ng-model="user.terms" required> I accept terms and conditions
    </label>
    <br><br>

    <!-- Submit -->
    <button type="submit" ng-disabled="regForm.$invalid">
      Submit
    </button>

  </form>

  <br>

  <!-- Display form data -->
  <h3>Entered Data:</h3>
  <pre>{{ user | json }}</pre>

</body>

<script>
  var app = angular.module("myApp", []);

  app.controller("FormController", function ($scope) {
    $scope.user = {};
  });
</script>

</html>
def get_folder_in_s3_bucket(bucket, prefix):
    try:
        s3_bucket_data = client.list_objects(Bucket= bucket, Prefix= prefix, Delimiter="/")
        s3_folder_list =  [(prefix_dict['Prefix']).removeprefix(prefix) for prefix_dict in s3_bucket_data.get("CommonPrefixes", None)]
        return s3_folder_list
    except Exception as e:
        print(f"There is an error as {e}")
        return None
{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":sunshine: :x-connect: Boost Days: What's on this week :x-connect: :sunshine:"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "Good morning Melbourne and hope you all had a fab weekend! :sunshine: \n\n Please see below for what's on this week! :yay: BRINGING some summer vibes to the office! "
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":calendar-date-28: Wednesday, 28th January",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "\n:coffee: :muffin: *Xero Café* – Cookies and Tim Tams \n :coffee: *Barista Special* – Golden Latte \n :flag-fr: Join us at *12.00pm* for some French Lunch in the Wominjeka Breakout Space on Level 3."
			}
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":calendar-date-29: Thursday, 29th January",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":coffee: *Xero Cafe*: Cookies and Tim tams.\n :coffee: *Barista Special* – Golden Latte \n :Breakfast: :strawberry: Join us at *8.30am -10.30am* for a *Tennis Inspired Breaky* in the Wominjeka Breakout Space on Level 3 . "
			}
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":calendar-date-30: Friday, 30th January ",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":cheers-9743: :aperol-spritz: *Happy Hour:* from 4pm - 5.30pm in the Wominjeka Breakout space. \n\n :yay: *Xero Melbourne Open*: Who is ready to become Melbourne Xero's PING PONG champion? There are prizes to be won, AO merchandise! Sign your team up in the :thread: \n\n :frozen-yoghurt: *Summer Special*: We also have a frozen yoghurt station, YES the best next thing to *YO-CHI*. We are bringing summer vibes to the office and would love to see our Xeros joining us."
			}
		},
		{
			"type": "divider"
		}
	]
}
# Intenta reparar el archivo primero
mv ~/.zsh_history ~/.zsh_history_bad
strings ~/.zsh_history_bad > ~/.zsh_history
fc -R ~/.zsh_history  # Recargar historial
/**
 if rerendering occurs or to stop duplicate events

if (button.dataset.recShareTracked) return;
button.dataset.recShareTracked = "true";

*/



// example

 function recShareTracking() {
        const recUserActions = document.querySelector(".rec-user-actions");

        if (!recUserActions) return;

        const shareButtons = recUserActions.querySelectorAll(
            ".rec-user-actions__cta-button",
        );

        if (!shareButtons.length) return;

        console.log({shareButtons})

        shareButtons.forEach((button) => {
            // Prevent duplicate listeners
            if (button.dataset.recShareTracked) return;
            button.dataset.recShareTracked = "true";

            button.addEventListener("click", (e) => {
                const clickedElement = e.target;
                const isButtonClick =
                    clickedElement === button ||
                    clickedElement.closest(".rec-user-actions__cta-button") ===
                        button;

                if (!isButtonClick) return;

                const buttonTextRaw = button.textContent?.trim() || "";
                const buttonText = buttonTextRaw.replace(/\s+/g, " ").trim() || "";

                if (buttonText) {
                    gtmPush({
                        event: "interaction_click",
                        component_name: "button",
                        click_text: buttonText,
                        click_url: null,
                    });
                }
            });
        });
    }
star

Wed Feb 18 2026 10:29:41 GMT+0000 (Coordinated Universal Time)

@usman13

star

Wed Feb 18 2026 01:16:09 GMT+0000 (Coordinated Universal Time)

@komal

star

Tue Feb 17 2026 17:04:23 GMT+0000 (Coordinated Universal Time)

@Ahtisham

star

Tue Feb 17 2026 17:03:31 GMT+0000 (Coordinated Universal Time)

@Ahtisham

star

Tue Feb 17 2026 17:01:40 GMT+0000 (Coordinated Universal Time)

@Ahtisham

star

Tue Feb 17 2026 10:50:58 GMT+0000 (Coordinated Universal Time)

@RehmatAli2024

star

Sun Feb 15 2026 15:52:46 GMT+0000 (Coordinated Universal Time)

@Aniket07

star

Fri Feb 13 2026 14:41:53 GMT+0000 (Coordinated Universal Time)

@jrg_300i

star

Thu Feb 12 2026 02:32:32 GMT+0000 (Coordinated Universal Time)

@davidmchale #textcontent #childnodes

star

Thu Feb 12 2026 02:30:52 GMT+0000 (Coordinated Universal Time)

@davidmchale #listeners #avoid #duplicate

star

Thu Feb 12 2026 02:30:52 GMT+0000 (Coordinated Universal Time)

@davidmchale #listeners #avoid #duplicate

star

Wed Feb 11 2026 15:02:39 GMT+0000 (Coordinated Universal Time)

@RehmatAli2024

star

Tue Feb 10 2026 19:43:38 GMT+0000 (Coordinated Universal Time)

@jrg_300i

star

Tue Feb 10 2026 19:42:09 GMT+0000 (Coordinated Universal Time)

@jrg_300i

star

Fri Feb 06 2026 19:35:35 GMT+0000 (Coordinated Universal Time)

@jrg_300i #javascript

star

Fri Feb 06 2026 14:44:31 GMT+0000 (Coordinated Universal Time)

@master00001

star

Fri Feb 06 2026 13:52:40 GMT+0000 (Coordinated Universal Time)

@marcopinero #firebird #sql

star

Fri Feb 06 2026 13:15:22 GMT+0000 (Coordinated Universal Time)

@Saravana_Kumar #python

star

Fri Feb 06 2026 13:09:56 GMT+0000 (Coordinated Universal Time) https://www.bestfreelancerscript.com/upwork-clone-script

@laradavies #software #php #clone

star

Thu Feb 05 2026 20:49:21 GMT+0000 (Coordinated Universal Time) https://www.youtube.com/watch?v=vSGQvtN_JIY

@2late #windows

star

Wed Feb 04 2026 11:59:11 GMT+0000 (Coordinated Universal Time) https://www.addustechnologies.com/blog/winzo-clone-app

@brucebanner #winzo #clone

star

Mon Feb 02 2026 13:50:55 GMT+0000 (Coordinated Universal Time)

@usman13

star

Mon Feb 02 2026 13:29:56 GMT+0000 (Coordinated Universal Time) https://briotouch.com/interactive-flat-panels/

@briotouch

star

Mon Feb 02 2026 07:03:42 GMT+0000 (Coordinated Universal Time) https://mobileappcircular.com/nft-marketplace-development-cost-7b69f3d9e353

@LilianAnderson #nftmarketplacedevelopment #nftmarketplacecost #blockchaindevelopment #nftstartuptips #nftdevelopmentcost

star

Sun Feb 01 2026 22:26:23 GMT+0000 (Coordinated Universal Time)

@FOHWellington

star

Fri Jan 30 2026 11:59:43 GMT+0000 (Coordinated Universal Time) https://www.trioangle.com/amazon-clone/

@chrisgaffany #amazonclone

star

Fri Jan 30 2026 11:57:58 GMT+0000 (Coordinated Universal Time) https://www.trioangle.com/airbnb-clone/

@chrisgaffany #airbnbclone

star

Fri Jan 30 2026 03:48:20 GMT+0000 (Coordinated Universal Time)

@iliavial

star

Fri Jan 30 2026 03:47:40 GMT+0000 (Coordinated Universal Time)

@iliavial

star

Fri Jan 30 2026 03:42:49 GMT+0000 (Coordinated Universal Time)

@staceylai

star

Fri Jan 30 2026 02:41:33 GMT+0000 (Coordinated Universal Time)

@staceylai

star

Fri Jan 30 2026 01:12:27 GMT+0000 (Coordinated Universal Time)

@staceylai

star

Fri Jan 30 2026 00:23:27 GMT+0000 (Coordinated Universal Time)

@staceylai

star

Thu Jan 29 2026 23:14:23 GMT+0000 (Coordinated Universal Time)

@staceylai

star

Thu Jan 29 2026 04:38:11 GMT+0000 (Coordinated Universal Time)

@staceylai

star

Tue Jan 27 2026 01:36:45 GMT+0000 (Coordinated Universal Time)

@davidmchale

star

Mon Jan 26 2026 10:13:43 GMT+0000 (Coordinated Universal Time) https://www.uniccm.com/blog/the-history-of-the-atomic-structure

@mateoardanza

star

Fri Jan 23 2026 11:48:36 GMT+0000 (Coordinated Universal Time)

@usman13

star

Fri Jan 23 2026 07:50:07 GMT+0000 (Coordinated Universal Time) https://www.yumeustechnologies.com/nowpayments-clone-script

@JohnFrancis #nowpaymentsclonescript #nowpaymentsclone #nowpayments

star

Fri Jan 23 2026 05:14:21 GMT+0000 (Coordinated Universal Time)

@@ankita123

star

Fri Jan 23 2026 05:06:59 GMT+0000 (Coordinated Universal Time)

@@ankita123

star

Thu Jan 22 2026 23:32:55 GMT+0000 (Coordinated Universal Time)

@nofil

star

Thu Jan 22 2026 21:34:59 GMT+0000 (Coordinated Universal Time) https://wedevs.com/blog/105501/disable-woocommerce-variable-product-price/

@EssquePro

star

Thu Jan 22 2026 15:50:27 GMT+0000 (Coordinated Universal Time) https://mergecsv.org

@SoulDee #typescript

star

Thu Jan 22 2026 10:28:49 GMT+0000 (Coordinated Universal Time)

@tanuja123

star

Thu Jan 22 2026 07:01:29 GMT+0000 (Coordinated Universal Time)

@Saravana_Kumar #python

star

Thu Jan 22 2026 02:46:30 GMT+0000 (Coordinated Universal Time)

@FOHWellington

star

Wed Jan 21 2026 14:40:04 GMT+0000 (Coordinated Universal Time)

@jrg_300i #javascript

star

Wed Jan 21 2026 07:27:14 GMT+0000 (Coordinated Universal Time) https://www.dappsfirm.com/pragmatic-play-clone-script

@TimDavid16 #pragmaticplayclonescript

star

Wed Jan 21 2026 03:22:42 GMT+0000 (Coordinated Universal Time)

@davidmchale #dataset #prevent #duplicate #event #listener

Save snippets that work with our extensions

Available in the Chrome Web Store Get Firefox Add-on Get VS Code extension