@ -1795,15 +1795,15 @@ ImU32 ImGui::GetColorU32(ImU32 col) 
			
		
	
		
		
			
				
					
					//-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
  
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					// std::lower_bound but without the bullshit
 // std::lower_bound but without the bullshit
  
			
		
	
		
		
			
				
					
					static  ImVector < Im GuiStorage : : Pair > : : iterator LowerBound ( ImVector < ImGuiStorage : : Pair > &  data ,  ImGuiID  key ) static  ImGuiStorage : : Pair * LowerBound ( ImVector < ImGuiStorage : : Pair > &  data ,  ImGuiID  key )  
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					{ {  
			
		
	
		
		
			
				
					
					    ImVector < Im GuiStorage : : Pair > : : iterator first  =  data . begin ( ) ;      ImGuiStorage : : Pair * first  =  data . Data ;   
			
				
				
			
		
	
		
		
			
				
					
					    ImVector < Im GuiStorage : : Pair > : : iterator  last  =  data . end ( ) ;      ImGuiStorage : : Pair *  last  =  data . Data  +  data . Size ;   
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					    size_t  count  =  ( size_t ) ( last  -  first ) ;      size_t  count  =  ( size_t ) ( last  -  first ) ;   
			
		
	
		
		
			
				
					
					    while  ( count  >  0 )      while  ( count  >  0 )   
			
		
	
		
		
			
				
					
					    {      {   
			
		
	
		
		
			
				
					
					        size_t  count2  =  count  > >  1 ;          size_t  count2  =  count  > >  1 ;   
			
		
	
		
		
			
				
					
					        ImVector < Im GuiStorage : : Pair > : : iterator mid  =  first  +  count2 ;          ImGuiStorage : : Pair * mid  =  first  +  count2 ;   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					        if  ( mid - > key  <  key )          if  ( mid - > key  <  key )   
			
		
	
		
		
			
				
					
					        {          {   
			
		
	
		
		
			
				
					
					            first  =  + + mid ;              first  =  + + mid ;   
			
		
	
	
		
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
					@ -1836,7 +1836,7 @@ void ImGuiStorage::BuildSortByKey() 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					int  ImGuiStorage : : GetInt ( ImGuiID  key ,  int  default_val )  const int  ImGuiStorage : : GetInt ( ImGuiID  key ,  int  default_val )  const  
			
		
	
		
		
			
				
					
					{ {  
			
		
	
		
		
			
				
					
					    ImVector < Pair > : : iterator   it  =  LowerBound ( const_cast < ImVector < ImGuiStorage : : Pair > & > ( Data ) ,  key ) ;      ImGuiStorage : : Pair *   it  =  LowerBound ( const_cast < ImVector < ImGuiStorage : : Pair > & > ( Data ) ,  key ) ;   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					    if  ( it  = =  Data . end ( )  | |  it - > key  ! =  key )      if  ( it  = =  Data . end ( )  | |  it - > key  ! =  key )   
			
		
	
		
		
			
				
					
					        return  default_val ;          return  default_val ;   
			
		
	
		
		
			
				
					
					    return  it - > val_i ;      return  it - > val_i ;   
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
						
					 
					@ -1849,7 +1849,7 @@ bool ImGuiStorage::GetBool(ImGuiID key, bool default_val) const 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					float  ImGuiStorage : : GetFloat ( ImGuiID  key ,  float  default_val )  const float  ImGuiStorage : : GetFloat ( ImGuiID  key ,  float  default_val )  const  
			
		
	
		
		
			
				
					
					{ {  
			
		
	
		
		
			
				
					
					    ImVector < Pair > : : iterator   it  =  LowerBound ( const_cast < ImVector < ImGuiStorage : : Pair > & > ( Data ) ,  key ) ;      ImGuiStorage : : Pair *   it  =  LowerBound ( const_cast < ImVector < ImGuiStorage : : Pair > & > ( Data ) ,  key ) ;   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					    if  ( it  = =  Data . end ( )  | |  it - > key  ! =  key )      if  ( it  = =  Data . end ( )  | |  it - > key  ! =  key )   
			
		
	
		
		
			
				
					
					        return  default_val ;          return  default_val ;   
			
		
	
		
		
			
				
					
					    return  it - > val_f ;      return  it - > val_f ;   
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
						
					 
					@ -1857,7 +1857,7 @@ float ImGuiStorage::GetFloat(ImGuiID key, float default_val) const 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					void *  ImGuiStorage : : GetVoidPtr ( ImGuiID  key )  const void *  ImGuiStorage : : GetVoidPtr ( ImGuiID  key )  const  
			
		
	
		
		
			
				
					
					{ {  
			
		
	
		
		
			
				
					
					    ImVector < Pair > : : iterator   it  =  LowerBound ( const_cast < ImVector < ImGuiStorage : : Pair > & > ( Data ) ,  key ) ;      ImGuiStorage : : Pair *   it  =  LowerBound ( const_cast < ImVector < ImGuiStorage : : Pair > & > ( Data ) ,  key ) ;   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					    if  ( it  = =  Data . end ( )  | |  it - > key  ! =  key )      if  ( it  = =  Data . end ( )  | |  it - > key  ! =  key )   
			
		
	
		
		
			
				
					
					        return  NULL ;          return  NULL ;   
			
		
	
		
		
			
				
					
					    return  it - > val_p ;      return  it - > val_p ;   
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
						
					 
					@ -1866,7 +1866,7 @@ void* ImGuiStorage::GetVoidPtr(ImGuiID key) const 
			
		
	
		
		
			
				
					
					// References are only valid until a new value is added to the storage. Calling a Set***() function or a Get***Ref() function invalidates the pointer.
 // References are only valid until a new value is added to the storage. Calling a Set***() function or a Get***Ref() function invalidates the pointer.
  
			
		
	
		
		
			
				
					
					int *  ImGuiStorage : : GetIntRef ( ImGuiID  key ,  int  default_val ) int *  ImGuiStorage : : GetIntRef ( ImGuiID  key ,  int  default_val )  
			
		
	
		
		
			
				
					
					{ {  
			
		
	
		
		
			
				
					
					    ImVector < Pair > : : iterator   it  =  LowerBound ( Data ,  key ) ;      ImGuiStorage : : Pair *   it  =  LowerBound ( Data ,  key ) ;   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					    if  ( it  = =  Data . end ( )  | |  it - > key  ! =  key )      if  ( it  = =  Data . end ( )  | |  it - > key  ! =  key )   
			
		
	
		
		
			
				
					
					        it  =  Data . insert ( it ,  Pair ( key ,  default_val ) ) ;          it  =  Data . insert ( it ,  Pair ( key ,  default_val ) ) ;   
			
		
	
		
		
			
				
					
					    return  & it - > val_i ;      return  & it - > val_i ;   
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
						
					 
					@ -1879,7 +1879,7 @@ bool* ImGuiStorage::GetBoolRef(ImGuiID key, bool default_val) 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					float *  ImGuiStorage : : GetFloatRef ( ImGuiID  key ,  float  default_val ) float *  ImGuiStorage : : GetFloatRef ( ImGuiID  key ,  float  default_val )  
			
		
	
		
		
			
				
					
					{ {  
			
		
	
		
		
			
				
					
					    ImVector < Pair > : : iterator   it  =  LowerBound ( Data ,  key ) ;      ImGuiStorage : : Pair *   it  =  LowerBound ( Data ,  key ) ;   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					    if  ( it  = =  Data . end ( )  | |  it - > key  ! =  key )      if  ( it  = =  Data . end ( )  | |  it - > key  ! =  key )   
			
		
	
		
		
			
				
					
					        it  =  Data . insert ( it ,  Pair ( key ,  default_val ) ) ;          it  =  Data . insert ( it ,  Pair ( key ,  default_val ) ) ;   
			
		
	
		
		
			
				
					
					    return  & it - > val_f ;      return  & it - > val_f ;   
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
						
					 
					@ -1887,7 +1887,7 @@ float* ImGuiStorage::GetFloatRef(ImGuiID key, float default_val) 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					void * *  ImGuiStorage : : GetVoidPtrRef ( ImGuiID  key ,  void *  default_val ) void * *  ImGuiStorage : : GetVoidPtrRef ( ImGuiID  key ,  void *  default_val )  
			
		
	
		
		
			
				
					
					{ {  
			
		
	
		
		
			
				
					
					    ImVector < Pair > : : iterator   it  =  LowerBound ( Data ,  key ) ;      ImGuiStorage : : Pair *   it  =  LowerBound ( Data ,  key ) ;   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					    if  ( it  = =  Data . end ( )  | |  it - > key  ! =  key )      if  ( it  = =  Data . end ( )  | |  it - > key  ! =  key )   
			
		
	
		
		
			
				
					
					        it  =  Data . insert ( it ,  Pair ( key ,  default_val ) ) ;          it  =  Data . insert ( it ,  Pair ( key ,  default_val ) ) ;   
			
		
	
		
		
			
				
					
					    return  & it - > val_p ;      return  & it - > val_p ;   
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
						
					 
					@ -1896,7 +1896,7 @@ void** ImGuiStorage::GetVoidPtrRef(ImGuiID key, void* default_val) 
			
		
	
		
		
			
				
					
					// FIXME-OPT: Need a way to reuse the result of lower_bound when doing GetInt()/SetInt() - not too bad because it only happens on explicit interaction (maximum one a frame)
 // FIXME-OPT: Need a way to reuse the result of lower_bound when doing GetInt()/SetInt() - not too bad because it only happens on explicit interaction (maximum one a frame)
  
			
		
	
		
		
			
				
					
					void  ImGuiStorage : : SetInt ( ImGuiID  key ,  int  val ) void  ImGuiStorage : : SetInt ( ImGuiID  key ,  int  val )  
			
		
	
		
		
			
				
					
					{ {  
			
		
	
		
		
			
				
					
					    ImVector < Pair > : : iterator   it  =  LowerBound ( Data ,  key ) ;      ImGuiStorage : : Pair *   it  =  LowerBound ( Data ,  key ) ;   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					    if  ( it  = =  Data . end ( )  | |  it - > key  ! =  key )      if  ( it  = =  Data . end ( )  | |  it - > key  ! =  key )   
			
		
	
		
		
			
				
					
					    {      {   
			
		
	
		
		
			
				
					
					        Data . insert ( it ,  Pair ( key ,  val ) ) ;          Data . insert ( it ,  Pair ( key ,  val ) ) ;   
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
						
					 
					@ -1912,7 +1912,7 @@ void ImGuiStorage::SetBool(ImGuiID key, bool val) 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					void  ImGuiStorage : : SetFloat ( ImGuiID  key ,  float  val ) void  ImGuiStorage : : SetFloat ( ImGuiID  key ,  float  val )  
			
		
	
		
		
			
				
					
					{ {  
			
		
	
		
		
			
				
					
					    ImVector < Pair > : : iterator   it  =  LowerBound ( Data ,  key ) ;      ImGuiStorage : : Pair *   it  =  LowerBound ( Data ,  key ) ;   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					    if  ( it  = =  Data . end ( )  | |  it - > key  ! =  key )      if  ( it  = =  Data . end ( )  | |  it - > key  ! =  key )   
			
		
	
		
		
			
				
					
					    {      {   
			
		
	
		
		
			
				
					
					        Data . insert ( it ,  Pair ( key ,  val ) ) ;          Data . insert ( it ,  Pair ( key ,  val ) ) ;   
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
						
					 
					@ -1923,7 +1923,7 @@ void ImGuiStorage::SetFloat(ImGuiID key, float val) 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					void  ImGuiStorage : : SetVoidPtr ( ImGuiID  key ,  void *  val ) void  ImGuiStorage : : SetVoidPtr ( ImGuiID  key ,  void *  val )  
			
		
	
		
		
			
				
					
					{ {  
			
		
	
		
		
			
				
					
					    ImVector < Pair > : : iterator   it  =  LowerBound ( Data ,  key ) ;      ImGuiStorage : : Pair *   it  =  LowerBound ( Data ,  key ) ;   
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					    if  ( it  = =  Data . end ( )  | |  it - > key  ! =  key )      if  ( it  = =  Data . end ( )  | |  it - > key  ! =  key )   
			
		
	
		
		
			
				
					
					    {      {   
			
		
	
		
		
			
				
					
					        Data . insert ( it ,  Pair ( key ,  val ) ) ;          Data . insert ( it ,  Pair ( key ,  val ) ) ;