text: /*
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership.  The ASF licenses this file
   * to you under the Apache License, Version 2.0 (the
   * "License"); you may not use this file except in compliance
   * with the License.  You may obtain a copy of the License at
   *
   *   http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing,
   * software distributed under the License is distributed on an
   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   * KIND, either express or implied.  See the License for the
   * specific language governing permissions and limitations
   * under the License.
   */
  
  #include "config.h"
  #include "terminal/palette.h"
  
  const guac_terminal_color GUAC_TERMINAL_INITIAL_PALETTE[256] = {
  
      /* Normal colors */
      {0, 0x00, 0x00, 0x00}, /* Black   */
      {1, 0x99, 0x3E, 0x3E}, /* Red     */
      {2, 0x3E, 0x99, 0x3E}, /* Green   */
      {3, 0x99, 0x99, 0x3E}, /* Brown   */
      {4, 0x3E, 0x3E, 0x99}, /* Blue    */
      {5, 0x99, 0x3E, 0x99}, /* Magenta */
      {6, 0x3E, 0x99, 0x99}, /* Cyan    */
      {7, 0x99, 0x99, 0x99}, /* White   */
  
      /* Intense colors */
      {8,  0x3E, 0x3E, 0x3E}, /* Black   */
      {9,  0xFF, 0x67, 0x67}, /* Red     */
      {10, 0x67, 0xFF, 0x67}, /* Green   */
      {11, 0xFF, 0xFF, 0x67}, /* Brown   */
      {12, 0x67, 0x67, 0xFF}, /* Blue    */
      {13, 0xFF, 0x67, 0xFF}, /* Magenta */
      {14, 0x67, 0xFF, 0xFF}, /* Cyan    */
      {15, 0xFF, 0xFF, 0xFF}, /* White   */
  
      /* Remainder of xterm's 256-color palette */
      {16,  0x00, 0x00, 0x00},
      {17,  0x00, 0x00, 0x5F},
      {18,  0x00, 0x00, 0x87},
      {19,  0x00, 0x00, 0xAF},
      {20,  0x00, 0x00, 0xD7},
      {21,  0x00, 0x00, 0xFF},
      {22,  0x00, 0x5F, 0x00},
      {23,  0x00, 0x5F, 0x5F},
      {24,  0x00, 0x5F, 0x87},
      {25,  0x00, 0x5F, 0xAF},
      {26,  0x00, 0x5F, 0xD7},
      {27,  0x00, 0x5F, 0xFF},
      {28,  0x00, 0x87, 0x00},
      {29,  0x00, 0x87, 0x5F},
      {30,  0x00, 0x87, 0x87},
      {31,  0x00, 0x87, 0xAF},
      {32,  0x00, 0x87, 0xD7},
      {33,  0x00, 0x87, 0xFF},
      {34,  0x00, 0xAF, 0x00},
      {35,  0x00, 0xAF, 0x5F},
      {36,  0x00, 0xAF, 0x87},
      {37,  0x00, 0xAF, 0xAF},
      {38,  0x00, 0xAF, 0xD7},
      {39,  0x00, 0xAF, 0xFF},
      {40,  0x00, 0xD7, 0x00},
      {41,  0x00, 0xD7, 0x5F},
      {42,  0x00, 0xD7, 0x87},
      {43,  0x00, 0xD7, 0xAF},
      {44,  0x00, 0xD7, 0xD7},
      {45,  0x00, 0xD7, 0xFF},
      {46,  0x00, 0xFF, 0x00},
      {47,  0x00, 0xFF, 0x5F},
      {48,  0x00, 0xFF, 0x87},
      {49,  0x00, 0xFF, 0xAF},
      {50,  0x00, 0xFF, 0xD7},
      {51,  0x00, 0xFF, 0xFF},
      {52,  0x5F, 0x00, 0x00},
      {53,  0x5F, 0x00, 0x5F},
      {54,  0x5F, 0x00, 0x87},
      {55,  0x5F, 0x00, 0xAF},
      {56,  0x5F, 0x00, 0xD7},
      {57,  0x5F, 0x00, 0xFF},
      {58,  0x5F, 0x5F, 0x00},
      {59,  0x5F, 0x5F, 0x5F},
      {60,  0x5F, 0x5F, 0x87},
      {61,  0x5F, 0x5F, 0xAF},
      {62,  0x5F, 0x5F, 0xD7},
      {63,  0x5F, 0x5F, 0xFF},
      {64,  0x5F, 0x87, 0x00},
      {65,  0x5F, 0x87, 0x5F},
      {66,  0x5F, 0x87, 0x87},
      {67,  0x5F, 0x87, 0xAF},
      {68,  0x5F, 0x87, 0xD7},
      {69,  0x5F, 0x87, 0xFF},
      {70,  0x5F, 0xAF, 0x00},
      {71,  0x5F, 0xAF, 0x5F},
      {72,  0x5F, 0xAF, 0x87},
      {73,  0x5F, 0xAF, 0xAF},
      {74,  0x5F, 0xAF, 0xD7},
      {75,  0x5F, 0xAF, 0xFF},
      {76,  0x5F, 0xD7, 0x00},
      {77,  0x5F, 0xD7, 0x5F},
      {78,  0x5F, 0xD7, 0x87},
      {79,  0x5F, 0xD7, 0xAF},
      {80,  0x5F, 0xD7, 0xD7},
      {81,  0x5F, 0xD7, 0xFF},
      {82,  0x5F, 0xFF, 0x00},
      {83,  0x5F, 0xFF, 0x5F},
      {84,  0x5F, 0xFF, 0x87},
      {85,  0x5F, 0xFF, 0xAF},
      {86,  0x5F, 0xFF, 0xD7},
      {87,  0x5F, 0xFF, 0xFF},
      {88,  0x87, 0x00, 0x00},
      {89,  0x87, 0x00, 0x5F},
      {90,  0x87, 0x00, 0x87},
      {91,  0x87, 0x00, 0xAF},
      {92,  0x87, 0x00, 0xD7},
      {93,  0x87, 0x00, 0xFF},
      {94,  0x87, 0x5F, 0x00},
      {95,  0x87, 0x5F, 0x5F},
      {96,  0x87, 0x5F, 0x87},
      {97,  0x87, 0x5F, 0xAF},
      {98,  0x87, 0x5F, 0xD7},
      {99,  0x87, 0x5F, 0xFF},
      {100, 0x87, 0x87, 0x00},
      {101, 0x87, 0x87, 0x5F},
      {102, 0x87, 0x87, 0x87},
      {103, 0x87, 0x87, 0xAF},
      {104, 0x87, 0x87, 0xD7},
      {105, 0x87, 0x87, 0xFF},
      {106, 0x87, 0xAF, 0x00},
      {107, 0x87, 0xAF, 0x5F},
      {108, 0x87, 0xAF, 0x87},
      {109, 0x87, 0xAF, 0xAF},
      {110, 0x87, 0xAF, 0xD7},
      {111, 0x87, 0xAF, 0xFF},
      {112, 0x87, 0xD7, 0x00},
      {113, 0x87, 0xD7, 0x5F},
      {114, 0x87, 0xD7, 0x87},
      {115, 0x87, 0xD7, 0xAF},
      {116, 0x87, 0xD7, 0xD7},
      {117, 0x87, 0xD7, 0xFF},
      {118, 0x87, 0xFF, 0x00},
      {119, 0x87, 0xFF, 0x5F},
      {120, 0x87, 0xFF, 0x87},
      {121, 0x87, 0xFF, 0xAF},
      {122, 0x87, 0xFF, 0xD7},
      {123, 0x87, 0xFF, 0xFF},
      {124, 0xAF, 0x00, 0x00},
      {125, 0xAF, 0x00, 0x5F},
      {126, 0xAF, 0x00, 0x87},
      {127, 0xAF, 0x00, 0xAF},
      {128, 0xAF, 0x00, 0xD7},
      {129, 0xAF, 0x00, 0xFF},
      {130, 0xAF, 0x5F, 0x00},
      {131, 0xAF, 0x5F, 0x5F},
      {132, 0xAF, 0x5F, 0x87},
      {133, 0xAF, 0x5F, 0xAF},
      {134, 0xAF, 0x5F, 0xD7},
      {135, 0xAF, 0x5F, 0xFF},
      {136, 0xAF, 0x87, 0x00},
      {137, 0xAF, 0x87, 0x5F},
      {138, 0xAF, 0x87, 0x87},
      {139, 0xAF, 0x87, 0xAF},
      {140, 0xAF, 0x87, 0xD7},
      {141, 0xAF, 0x87, 0xFF},
      {142, 0xAF, 0xAF, 0x00},
      {143, 0xAF, 0xAF, 0x5F},
      {144, 0xAF, 0xAF, 0x87},
      {145, 0xAF, 0xAF, 0xAF},
      {146, 0xAF, 0xAF, 0xD7},
      {147, 0xAF, 0xAF, 0xFF},
      {148, 0xAF, 0xD7, 0x00},
      {149, 0xAF, 0xD7, 0x5F},
      {150, 0xAF, 0xD7, 0x87},
      {151, 0xAF, 0xD7, 0xAF},
      {152, 0xAF, 0xD7, 0xD7},
      {153, 0xAF, 0xD7, 0xFF},
      {154, 0xAF, 0xFF, 0x00},
      {155, 0xAF, 0xFF, 0x5F},
      {156, 0xAF, 0xFF, 0x87},
      {157, 0xAF, 0xFF, 0xAF},
      {158, 0xAF, 0xFF, 0xD7},
      {159, 0xAF, 0xFF, 0xFF},
      {160, 0xD7, 0x00, 0x00},
      {161, 0xD7, 0x00, 0x5F},
      {162, 0xD7, 0x00, 0x87},
      {163, 0xD7, 0x00, 0xAF},
      {164, 0xD7, 0x00, 0xD7},
      {165, 0xD7, 0x00, 0xFF},
      {166, 0xD7, 0x5F, 0x00},
      {167, 0xD7, 0x5F, 0x5F},
      {168, 0xD7, 0x5F, 0x87},
      {169, 0xD7, 0x5F, 0xAF},
      {170, 0xD7, 0x5F, 0xD7},
      {171, 0xD7, 0x5F, 0xFF},
      {172, 0xD7, 0x87, 0x00},
      {173, 0xD7, 0x87, 0x5F},
      {174, 0xD7, 0x87, 0x87},
      {175, 0xD7, 0x87, 0xAF},
      {176, 0xD7, 0x87, 0xD7},
      {177, 0xD7, 0x87, 0xFF},
      {178, 0xD7, 0xAF, 0x00},
      {179, 0xD7, 0xAF, 0x5F},
      {180, 0xD7, 0xAF, 0x87},
      {181, 0xD7, 0xAF, 0xAF},
      {182, 0xD7, 0xAF, 0xD7},
      {183, 0xD7, 0xAF, 0xFF},
      {184, 0xD7, 0xD7, 0x00},
      {185, 0xD7, 0xD7, 0x5F},
      {186, 0xD7, 0xD7, 0x87},
      {187, 0xD7, 0xD7, 0xAF},
      {188, 0xD7, 0xD7, 0xD7},
      {189, 0xD7, 0xD7, 0xFF},
      {190, 0xD7, 0xFF, 0x00},
      {191, 0xD7, 0xFF, 0x5F},
      {192, 0xD7, 0xFF, 0x87},
      {193, 0xD7, 0xFF, 0xAF},
      {194, 0xD7, 0xFF, 0xD7},
      {195, 0xD7, 0xFF, 0xFF},
      {196, 0xFF, 0x00, 0x00},
      {197, 0xFF, 0x00, 0x5F},
      {198, 0xFF, 0x00, 0x87},
      {199, 0xFF, 0x00, 0xAF},
      {200, 0xFF, 0x00, 0xD7},
      {201, 0xFF, 0x00, 0xFF},
      {202, 0xFF, 0x5F, 0x00},
      {203, 0xFF, 0x5F, 0x5F},
      {204, 0xFF, 0x5F, 0x87},
      {205, 0xFF, 0x5F, 0xAF},
      {206, 0xFF, 0x5F, 0xD7},
      {207, 0xFF, 0x5F, 0xFF},
      {208, 0xFF, 0x87, 0x00},
      {209, 0xFF, 0x87, 0x5F},
      {210, 0xFF, 0x87, 0x87},
      {211, 0xFF, 0x87, 0xAF},
      {212, 0xFF, 0x87, 0xD7},
      {213, 0xFF, 0x87, 0xFF},
      {214, 0xFF, 0xAF, 0x00},
      {215, 0xFF, 0xAF, 0x5F},
      {216, 0xFF, 0xAF, 0x87},
      {217, 0xFF, 0xAF, 0xAF},
      {218, 0xFF, 0xAF, 0xD7},
      {219, 0xFF, 0xAF, 0xFF},
      {220, 0xFF, 0xD7, 0x00},
      {221, 0xFF, 0xD7, 0x5F},
      {222, 0xFF, 0xD7, 0x87},
      {223, 0xFF, 0xD7, 0xAF},
      {224, 0xFF, 0xD7, 0xD7},
      {225, 0xFF, 0xD7, 0xFF},
      {226, 0xFF, 0xFF, 0x00},
      {227, 0xFF, 0xFF, 0x5F},
      {228, 0xFF, 0xFF, 0x87},
      {229, 0xFF, 0xFF, 0xAF},
      {230, 0xFF, 0xFF, 0xD7},
      {231, 0xFF, 0xFF, 0xFF},
      {232, 0x08, 0x08, 0x08},
      {233, 0x12, 0x12, 0x12},
      {234, 0x1C, 0x1C, 0x1C},
      {235, 0x26, 0x26, 0x26},
      {236, 0x30, 0x30, 0x30},
      {237, 0x3A, 0x3A, 0x3A},
      {238, 0x44, 0x44, 0x44},
      {239, 0x4E, 0x4E, 0x4E},
      {240, 0x58, 0x58, 0x58},
      {241, 0x62, 0x62, 0x62},
      {242, 0x6C, 0x6C, 0x6C},
      {243, 0x76, 0x76, 0x76},
      {244, 0x80, 0x80, 0x80},
      {245, 0x8A, 0x8A, 0x8A},
      {246, 0x94, 0x94, 0x94},
      {247, 0x9E, 0x9E, 0x9E},
      {248, 0xA8, 0xA8, 0xA8},
      {249, 0xB2, 0xB2, 0xB2},
      {250, 0xBC, 0xBC, 0xBC},
      {251, 0xC6, 0xC6, 0xC6},
      {252, 0xD0, 0xD0, 0xD0},
      {253, 0xDA, 0xDA, 0xDA},
      {254, 0xE4, 0xE4, 0xE4},
      {255, 0xEE, 0xEE, 0xEE}
  
  };
  
  int guac_terminal_colorcmp(const guac_terminal_color* a,
          const guac_terminal_color* b) {
  
      /* Consider red component highest order ... */
      if (a->red != b->red)
          return a->red - b->red;
  
      /* ... followed by green ... */
      if (a->green != b->green)
          return a->green - b->green;
  
      /* ... followed by blue */
      if (a->blue != b->blue)
          return a->blue - b->blue;
  
      /* If all components match, colors are equal */
      return 0;
  
  }
  
  